note 27190 added to faq.html
| From: | martellare at rack1 dot php dot net | Date: | Tue, 26 Nov 2002 17:25:06 +0000 |
| Subject: | note 27190 added to faq.html | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-40004@lists.php.net to get a copy of this message | ||
A JavaScript Note: Using element indexes to reference form elements can cause problems when you want
to add new elements to your form; it can shift the indexes of the elements that are already there.
For example, You've got an array of checkboxes that exist at the beginning of a form:
===================
<FORM>
<INPUT type="checkbox" name="fruits[]" value="apple">apple
<INPUT type="checkbox" name="fruits[]" value="orange">orange
<INPUT type="checkbox" name="fruits[]" value="banana">banana
</FORM>
===================
... These elements could be referenced in JavaScript like so:
===================
<SCRIPT language="JavaScript" type="text/javascript">
<!--
var index = 0; //could be 1 or 2 as well
alert(document.forms[0].elements[index]);
//-->
</SCRIPT>
===================
However, if you added a new textbox before these elements, the checkboxes indexes become 1 - 3
instead of 0 - 2; That can mess up what ever code you create depending on those indexes.
Instead, try referencing your html arrays in JavaScript this way. I know it works in Netscape 4
& IE 6, I hope it to some extent is universal...
===================
<SCRIPT language="JavaScript" type="text/javascript">
<!--
var message = "";
for (var i = 0; i < document.forms[0].elements['fruits[]'].length; i++)
{
message += "events[" + i + "]: " +
document.forms[0].elements['fruits[]'][i].value + "\n";
}
alert(message);
//-->
</SCRIPT>
===================
--
http://www.php.net/manual/en/faq.html.php
http://master.php.net/manage/user-notes.php?action=edit+27190
http://master.php.net/manage/user-notes.php?action=delete+27190
http://master.php.net/manage/user-notes.php?action=reject+27190