473,387 Members | 1,897 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

Need help with a link

I need help with this one. I have a function that pastes a row. In
each row i am pasting a link which is to call a date picker javascript
function. This is the code that pastes the link :

link = document.createElement('a');
link.href ="javascript:show_calendar('document.form1.date',d ocument.form1.date.value);";
img = document.createElement('img');
img.setAttribute("src","H:Diverse\\cal.gif");

link.appendChild(img);

var td3 = document.createElement("TD")
td3.appendChild (input3)
td3.appendChild(link)

when i run this and press the link i get a error message that says :
document.form1.date.value is null or not an object. The function
show_calendar() has been tested in other contexts and works fine.

Can anybody solve this one ?
Jul 20 '05 #1
8 5072
> Not without knowing the structure of your page.

Okay here it comes.

This is the main script, ive put it in a html page to illustrate how
it works :

-------------------------------------------------------------------------------

<html>
<head>
<script type="text/javascript">
function addRow(id){

var index = document.form1.hidden.value;
var tbody = document.getElementById(id).getElementsByTagName(" TBODY")[0];
var row = document.createElement("TR");
row.setAttribute("id","row" + index);
//Clone this node
var targetNode = document.getElementById('SELECT')
input1 = targetNode.cloneNode(true)
input1.setAttribute("name","select" +index)

input2 = document.createElement("input");
input2.setAttribute("name","a" +index)
input2.setAttribute("value","")
input2.setAttribute("type","text")
input2.setAttribute("readOnly","false")
input2.setAttribute("size","32")

input3 = document.createElement("input");
input3.setAttribute("name","x")
input3.setAttribute("value","")
input3.setAttribute("type","text")
input3.setAttribute("readOnly","false")
input3.setAttribute("size","8")
input3.setAttribute("maxlength","10")
link = document.createElement('a');
link.href="javascript:
show_calendar('document.form1.date',document.form1 .date.value);"
img = document.createElement('img');
img.setAttribute("border","0");
img.setAttribute("height","16");
img.setAttribute("width","16");
img.setAttribute("src","H:Diverse\\cal.gif");
img.setAttribute("alt","Trykk her for å få opp kalender");

link.appendChild(img);

input4 = document.createElement("input");
input4.setAttribute("name","fra_dato")
input4.setAttribute("value","")
input4.setAttribute("type","text")
input4.setAttribute("readOnly","false")
input4.setAttribute("size","15")
input4.onclick = function(){ alert(input3.name) };

input5 = document.createElement("input");
input5.setAttribute("name","d" +index)
input5.setAttribute("value","")
input5.setAttribute("type","text")
input5.setAttribute("size","8")

var td1 = document.createElement("TD")
td1.appendChild(input1)

var td2 = document.createElement("TD")
td2.appendChild (input2)

var td3 = document.createElement("TD")
td3.appendChild (input3)
td3.appendChild(link)

var td4 = document.createElement("TD")
td4.appendChild (input4)

var td5 = document.createElement("TD")
td5.appendChild (input5)

row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);
row.appendChild(td4);
row.appendChild(td5);
tbody.appendChild(row);

//increase index of hidden field
index++
document.form1.hidden.value=index
}
</script>
<script src="H:\Diverse\ts_picker.js"></script>
</head>

<body>
<form name="form1">
<input type="hidden" value="0" name="hidden">
<table id="myTable" cellspacing="0" border="1">
<tr>
<td>&nbsp;<select size="1" name="havnkode" id="select"> <option
value="02">Drop down</option><option value="00">Test1</option>
</td>
<td><input name="fra_dato" size="8" type="text" value=""
maxlength="10" readonly><a
href="javascript:show_calendar('document.form1.fra _dato');">
<img src="H:Diverse\cal.gif" width="16" height="16" border="0"
alt="Trykk her for å få opp kalender"></a></td>
<td>row1_column1</td>
</tr>
</table>
<input type="button" value="new row"
onClick="javascript:addRow('myTable')">
</body>
</form>
</html>

-------------------------------------------------------------------------------

This is the calendar function , ive saved it as ts_picker.js :

-------------------------------------------------------------------------------

function show_calendar(str_target, str_datetime) {

var arr_months = ["January", "February", "March", "April", "May",
"June",
"July", "August", "September", "October", "November", "December"];
var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
var n_weekstart = 1; // day week starts from (normally 0 or 1)

var dt_datetime = (str_datetime == null || str_datetime =="" ? new
Date() : str2dt(str_datetime));
var dt_prev_month = new Date(dt_datetime);
dt_prev_month.setMonth(dt_datetime.getMonth()-1);
var dt_next_month = new Date(dt_datetime);
dt_next_month.setMonth(dt_datetime.getMonth()+1);
var dt_firstday = new Date(dt_datetime);
dt_firstday.setDate(1);
dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
var dt_lastday = new Date(dt_next_month);
dt_lastday.setDate(0);

// html generation (feel free to tune it for your particular
application)
// print calendar header
var str_buffer = new String (
"<html>\n"+
"<head>\n"+
" <title>Kalender</title>\n"+
"</head>\n"+
"<body bgcolor=\"White\">\n"+
"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\"
width=\"100%\">\n"+
"<tr><td bgcolor=\"#4682B4\">\n"+
"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\"
width=\"100%\">\n"+
"<tr>\n <td bgcolor=\"#4682B4\"><a
href=\"javascript:window.opener.show_calendar('"+
str_target+"', '"+
dt2dtstr(dt_prev_month)+"'+document.cal.time.value );\">"+
"<img src=\"prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
" alt=\"previous month\"></a></td>\n"+
" <td bgcolor=\"#4682B4\" colspan=\"5\">"+
"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
+arr_months[dt_datetime.getMonth()]+"
"+dt_datetime.getFullYear()+"</font></td>\n"+
" <td bgcolor=\"#4682B4\" align=\"right\"><a
href=\"javascript:window.opener.show_calendar('"
+str_target+"', '"+dt2dtstr(dt_next_month)+"'+document.cal.time.va lue);\">"+
"<img src=\"next.gif\" width=\"16\" height=\"16\" border=\"0\""+ "
alt=\"next month\"></a></td>\n</tr>\n"
);

var dt_current_day = new Date(dt_firstday);
// print weekdays titles
str_buffer += "<tr>\n";
for (var n=0; n<7; n++)
str_buffer += " <td bgcolor=\"#87CEFA\">"+
"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
week_days[(n_weekstart+n)%7]+"</font></td>\n";
// print calendar table
str_buffer += "</tr>\n";
while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
dt_current_day.getMonth() == dt_firstday.getMonth()) {
// print row heder
str_buffer += "<tr>\n";
for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
if (dt_current_day.getDate() == dt_datetime.getDate() &&
dt_current_day.getMonth() == dt_datetime.getMonth())
// print current date
str_buffer += " <td bgcolor=\"#FFB6C1\" align=\"right\">";
else if (dt_current_day.getDay() == 0 || dt_current_day.getDay()
== 6)
// weekend days
str_buffer += " <td bgcolor=\"#DBEAF5\" align=\"right\">";
else
// print working days of current month
str_buffer += " <td bgcolor=\"white\" align=\"right\">";

if (dt_current_day.getMonth() == dt_datetime.getMonth())
// print days of current month
str_buffer += "<a href=\"javascript:window.opener."+str_target+
".value='"+dt2dtstr(dt_current_day)+"'+document.ca l.time.value;
window.close();\">"+
"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
else
// print days of other months
str_buffer += "<a href=\"javascript:window.opener."+str_target+
".value='"+dt2dtstr(dt_current_day)+"'+document.ca l.time.value;
window.close();\">"+
"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
dt_current_day.setDate(dt_current_day.getDate()+1) ;
}
// print row footer
str_buffer += "</tr>\n";
}
// print calendar footer
str_buffer +=
"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
"<font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
"<input type=\"hidden\" name=\"time\"
value=\""+dt2tmstr(dt_datetime)+
"\" size=\"8\" maxlength=\"8\"></font></td></tr>\n</form>\n" +
"</table>\n" +
"</tr>\n</td>\n</table>\n" +
"</body>\n" +
"</html>\n";

var vWinCal = window.open("", "Calendar",
"width=200,height=210,status=no,resizable=yes,top= 200,left=350");
vWinCal.opener = self;
var calc_doc = vWinCal.document;
calc_doc.write (str_buffer);
calc_doc.close();
}

function str2dt (str_datetime) {
var re_date = /^(\d+)\.(\d+)\.(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
if (!re_date.exec(str_datetime))
return alert("Invalid Datetime format: "+ str_datetime);
return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4,
RegExp.$5, RegExp.$6));
}
function dt2dtstr (dt_datetime) {
return (new String (
dt_datetime.getDate()+"."+(dt_datetime.getMonth()+ 1)+"."+dt_datetime.getFullYear()+"
"));
}
function dt2tmstr (dt_datetime) {
return (new String ("\t\t"
+dt_datetime.getHours()+":"+dt_datetime.getMinutes ()+":"+dt_datetime.getSeconds()));
}

--------------------------------------------------------------------------------
Jul 20 '05 #2
JRS: In article <5b**************************@posting.google.com >, seen
in news:comp.lang.javascript, ti**********@hotmail.com posted at Tue, 2
Sep 2003 01:04:17 :-
var dt_next_month = new Date(dt_datetime);
dt_next_month.setMonth(dt_datetime.getMonth()+1);


If dt_datetime is new Date(2003, 7, 31), Aug 31, then dt_next_month will
become October 1st.

And, of course, according to Fred Hoyle, "October the First is Too Late"
(a book title).

If, in incrementing/decrementing the Month, the Date needs to be set to
1<=D<=28, then do the latter first.

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 MIME. ©
Web <URL:http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
PAS EXE etc : <URL:http://www.merlyn.demon.co.uk/programs/> - see 00index.htm
Dates - miscdate.htm moredate.htm js-dates.htm pas-time.htm critdate.htm etc.
Jul 20 '05 #3
Dr John Stockton <sp**@merlyn.demon.co.uk> writes:
If, in incrementing/decrementing the Month, the Date needs to be set to
1<=D<=28, then do the latter first.


Then you have to test for that, which requires knowing the lengths of
months. I believe the Date object knows those better than me. :)

You can set the month first, check if it worked, and if not, set the
date back.

// "date" is the date we want to add a month to

var mth = date.getMonth();
date.setMonth(mth+1);
if (date.getMonth() != mth+1) { //overflow
date.setDate(0); // day before 1st
}

With this code, the 28th through 31th of January this year are all
sent to the 28th of February.

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #4
Lasse Reichstein Nielsen <lr*@hotpop.com> wrote in message news:<ek**********@hotpop.com>...
Dr John Stockton <sp**@merlyn.demon.co.uk> writes:
If, in incrementing/decrementing the Month, the Date needs to be set to
1<=D<=28, then do the latter first.


Then you have to test for that, which requires knowing the lengths of
months. I believe the Date object knows those better than me. :)

You can set the month first, check if it worked, and if not, set the
date back.

// "date" is the date we want to add a month to

var mth = date.getMonth();
date.setMonth(mth+1);
if (date.getMonth() != mth+1) { //overflow
date.setDate(0); // day before 1st
}

With this code, the 28th through 31th of January this year are all
sent to the 28th of February.

/L

Well first i have to get this link to work for each pasted row. This
is my real problem. Has anyone got a solution to this ?

Tim
Jul 20 '05 #5
ti**********@hotmail.com wrote:
Not without knowing the structure of your page.


Okay here it comes.

This is the main script, ive put it in a html page to illustrate how
it works :


In Internet Explorer NAMEd form elements are not part of the document.forms[].elements[] collection. This can be
demonstrated very simply with:

<body onload="createInput();alert(document.forms['myForm'].elements['abc'].value);">
<form name="myForm">
</form>
<script type="text/javascript">
function createInput() {
var input2 = document.createElement("input");
// input2.setAttribute("id", "abc");
input2.setAttribute("name","abc");
input2.setAttribute("value","");
input2.setAttribute("type","text");
input2.setAttribute("readOnly","false");
input2.setAttribute("size","32");

document.forms['myForm'].appendChild(input2);
}
</script>
</body>

If you uncomment "input2.setAttribute("id", "abc")" then you can access the form element via either
document.forms[].elements['abc'] or document.getElementById('abc') in IE 5.5+, Mozilla and Opera 7.

--
| Grant Wagner <gw*****@agricoreunited.com>

* Client-side Javascript and Netscape 4 DOM Reference available at:
* http://devedge.netscape.com/library/...ce/frames.html
* Internet Explorer DOM Reference available at:
* http://msdn.microsoft.com/workshop/a...ence_entry.asp
* Netscape 6/7 DOM Reference available at:
* http://www.mozilla.org/docs/dom/domref/
* Tips for upgrading JavaScript for Netscape 7 / Mozilla
* http://www.mozilla.org/docs/web-deve...upgrade_2.html
Jul 20 '05 #6
JRS: In article <ek**********@hotpop.com>, seen in
news:comp.lang.javascript, Lasse Reichstein Nielsen <lr*@hotpop.com>
posted at Wed, 3 Sep 2003 01:10:38 :-
Dr John Stockton <sp**@merlyn.demon.co.uk> writes:
If, in incrementing/decrementing the Month, the Date needs to be set to
1<=D<=28, then do the latter first.
Then you have to test for that, which requires knowing the lengths of
months. I believe the Date object knows those better than me. :)


I believe that you have misunderstood what I wrote.

To go from a random date to the 1st..28th of next month, one can always
go first to the 1st..28th of the current month, and incrementing the
month then cannot affect the date.

You can set the month first, check if it worked, and if not, set the
date back.

// "date" is the date we want to add a month to

var mth = date.getMonth();
date.setMonth(mth+1);
if (date.getMonth() != mth+1) { //overflow
date.setDate(0); // day before 1st
}

With this code, the 28th through 31th of January this year are all
sent to the 28th of February.


That is, of course, good for getting to the last of a month. Except at
the end of the year, when the != is false. One should check instead to
see whether the getDate() gives what it gave before or use (mth+1)%12.

<URL:http://www.merlyn.demon.co.uk/js-date1.htm#MC>
<URL:http://www.merlyn.demon.co.uk/js-date2.htm#incr>

IIRC, setDate(0) may fail to give the last of the previous month in
Macintosh Netscape 4 - does anyone know? See, using Mac NS4, the second
in Bug Tests under <URL:http://www.merlyn.demon.co.uk/js-dates.htm#SDT>.

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> JS maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/JS/&c., FAQ topics, links.
Jul 20 '05 #7
Dr John Stockton <sp**@merlyn.demon.co.uk> writes:
I believe that you have misunderstood what I wrote.
It seems I did. What I was trying to hit, was the same date in the
next month, or the last day of the next month if that date doesn't
exist.
To go from a random date to the 1st..28th of next month, one can always
go first to the 1st..28th of the current month, and incrementing the
month then cannot affect the date.
That will work.

What makes Date objects so much fun is, that when changing it from
one arbitrary date to another, using setMonth and setDate, then there
is no order that always work.

date first mth first
Feb 2nd => Jan 31th Jan 3rd Jan 31th
Jan 31th => Feb 2nd Feb 2nd Mar 2nd

It is safest to set either date or month to a safe value (e.g., 1 for
day or 0 for month) and then set the desired month and date in any
order.
That is, of course, good for getting to the last of a month. Except at
the end of the year, when the != is false.


DOH! There is always something :)

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #8
JRS: In article <r8**********@hotpop.com>, seen in
news:comp.lang.javascript, Lasse Reichstein Nielsen <lr*@hotpop.com>
posted at Wed, 3 Sep 2003 22:23:39 :-

It is safest to set either date or month to a safe value (e.g., 1 for
day or 0 for month) and then set the desired month and date in any
order.


FAQ readers should know that trick, indirectly. It is a pity that the
routines which set Y M & D cannot have, as those which set h m & s have,
additional parameters to set lesser fields. Or rather, on checking the
old NS JS documentation and ECMA, it is a pity that it is not better
known that they do. Requires JS 1.3, which probably everyone has by
now?

Watch out also for the non-existence, within the EU, of one hour of
civil time on the last Sunday of March, at 01:00 GMT (possibly UTC in
some countries).

// 'cannot' != 'can not' // for long > -30

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> JS maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/JS/&c., FAQ topics, links.
Jul 20 '05 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Sorby | last post by:
Hi I've been coding in PHP for a little while now and was starting to feel pretty confident but then realise I need to understand regular expressions to solve a particular problem I've got ......
2
by: Markus | last post by:
Hello, I'm running on Mac OS X and need to create a soft link to a file. I tried both makealias() and link(). While makealias creates a Finder alias just fine my application that needs to read...
3
by: Steve | last post by:
Hi, I have a nice little script that works well displaying images on my website. It's a script where if you clik a thumbnail image a pop up window opens that contains a larger version of the same...
3
by: Steve | last post by:
i pulled an example off the web and modified it somewhat and whats killimg me is that sometimes it works and sometimes it doesnt. the following is the only line that allows this thing to work over...
0
by: Luis E Valencia | last post by:
Read from above to top. I didnt understand. This is the code that fills that datagrid Public Sub pasar(ByVal sender As System.Object, ByVal e As...
1
by: satan | last post by:
I need a help with the program to test the insertion, deletion, search, copyList, and the copy constructor operations for an object in the class UnorderedLinkedList. These are my classes: ...
7
by: satan | last post by:
I need a help with the program to test the insertion, deletion, search, copyList, and the copy constructor operations for an object in the class UnorderedLinkedList. These are my classes: ...
25
by: crescent_au | last post by:
Hi all, I've written a login/logout code. It does what it's supposed to do but the problem is when I logout and press browser's back button (in Firefox), I get to the last login page. In IE,...
5
by: Andrew Hedges | last post by:
Wherein I attempt to debunk some myths about the relative merits of the two methods for programmatically adding content to a web page: ...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.