472,780 Members | 2,061 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,780 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 5030
> 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: Rina0 | last post by:
Cybersecurity engineering is a specialized field that focuses on the design, development, and implementation of systems, processes, and technologies that protect against cyber threats and...
0
by: erikbower65 | last post by:
Using CodiumAI's pr-agent is simple and powerful. Follow these steps: 1. Install CodiumAI CLI: Ensure Node.js is installed, then run 'npm install -g codiumai' in the terminal. 2. Connect to...
0
by: erikbower65 | last post by:
Here's a concise step-by-step guide for manually installing IntelliJ IDEA: 1. Download: Visit the official JetBrains website and download the IntelliJ IDEA Community or Ultimate edition based on...
0
by: kcodez | last post by:
As a H5 game development enthusiast, I recently wrote a very interesting little game - Toy Claw ((http://claw.kjeek.com/))。Here I will summarize and share the development experience here, and hope it...
0
by: Taofi | last post by:
I try to insert a new record but the error message says the number of query names and destination fields are not the same This are my field names ID, Budgeted, Actual, Status and Differences ...
14
DJRhino1175
by: DJRhino1175 | last post by:
When I run this code I get an error, its Run-time error# 424 Object required...This is my first attempt at doing something like this. I test the entire code and it worked until I added this - If...
0
by: lllomh | last post by:
Define the method first this.state = { buttonBackgroundColor: 'green', isBlinking: false, // A new status is added to identify whether the button is blinking or not } autoStart=()=>{
0
by: lllomh | last post by:
How does React native implement an English player?
0
by: Mushico | last post by:
How to calculate date of retirement from date of birth

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.