Hi,
reden wir über unterschiedliche Dinge?
Nein. =;-)
In meinem Beispiel habe ich 2 Formulare, greife über die DOM-Methode getElementById zu (nicht über MS-Syntax document.all)
Also über W3C-DOM (nicht über IE-DOM).
und der Internet Explorer wählt das erste Vorkommen (vertauscht man die Formulare, findet er das Richtige) in name, nicht das in id.
Gehst du übers JavaScript-DOM (forms & elements), dann funktioniert dein Beispiel trotzdem. Die Aussage "The scope of the name attribute for a control within a FORM element is the FORM element." wird also vom IE durchaus auch beachtet. 'A control's "control name" is given by its name attribute.' ist hingegen veraltet. Mittlerweile gilt auch die ID als "control name", weswegen sich gleichlautende ID und NAMEs *innerhalb* *einer* FORM für unterschiedliche Elemente ausschließen.
Geändertes Beispiel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Kontingent- und Preispflege</title>
</head>
<body lang="de">
<form name="nameForm" action="controller" method="post">
<dl>
<dd>
<select name="vonMonat">
<option value="01">Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>
<option value="04">April</option>
<option value="05" selected="selected">Mai</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>
</select>
</dd>
<dd>
<select name="vonJahr">
<option value="2005">2005</option>
<option value="2006" selected="selected">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
</select>
</dd>
</dl>
</form>
<form name="idForm" action="error" method="post" onsubmit="return false">
<dl>
<dd>
<select id="vonMonat">
<option value="6" selected="selected">Juli</option>
<option value="7">August</option>
<option value="8">September</option>
</select>
</dd>
<dd>
<select id="vonJahr">
<option value="2005" selected="selected">2005</option>
</select>
</dd>
<dd>
<br>DOM Level 2 (IE-):<br>
<button type="button" onclick="alert(document.getElementsByName('vonMonat')[0].value)">Monat NAME</button>
<button type="button" onclick="alert(document.getElementById('vonMonat').value)">Monat ID</button>
<br>DOM Level 0 (IE+):<br>
<button type="button" onclick="alert(document.forms['nameForm'].elements['vonMonat'].value)">Monat NAME</button>
<button type="button" onclick="alert(document.forms['idForm'].elements['vonMonat'].value)">Monat ID</button>
<br>DOM Level 2+ (IE--):<br>
<button type="button" onclick="alert(document.getElementsByName('nameForm')[0].getElementsByName('vonMonat')[0].value)">Monat NAME</button>
<button type="button" onclick="alert(document.getElementsByName('idForm')[0].getElementById('vonMonat').value)">Monat ID</button>
<br>DOM Level mixed 2/0 (IE+):<br>
<button type="button" onclick="alert(document.getElementsByName('nameForm')[0].vonMonat.value)">Monat NAME</button>
<button type="button" onclick="alert(document.getElementsByName('idForm')[0].vonMonat.value)">Monat ID</button>
</dd>
</dl>
</form>
</body>
</html>
Der "eingrenzende DOM-Level-2-Zugriff", also getElementsByName("id")[0].getElementById("vonMonat"), funktioniert hingegen, anders als sein DOM-Level-0-Pendant, überhaupt nicht. Die Mischform (Zugriff auf FORM mittels W3C-DOM und anschließender Zugriff auf die FORM-Elemente mittels JavaScript-DOM) funktioniert hingegen wieder einwandfrei.
Gruß, Cybaer
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!