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 ? 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> <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()));
}
--------------------------------------------------------------------------------
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.
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.'
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 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
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.
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.'
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. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
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 ......
|
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...
|
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...
|
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...
|
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...
|
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:
...
|
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:
...
|
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,...
|
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:
...
|
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,...
|
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...
|
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...
|
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
|
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...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
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...
|
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,...
|
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...
| |