невозможно получить элементы формы с помощью имени формы в JavaScript - PullRequest
7 голосов
/ 13 октября 2010

У меня проблема с доступом к моей форме по имени. Когда я использую document.form [0] .mylink.value, он распознает значение и выводит его в innerHTML, который я указываю. Однако, когда я использую document.myform.mylink.value, он, похоже, не распознает форму. Я пробовал это в Chrome 6.0, а также Firefox 3.6.3 и получить тот же результат в обоих. Мне действительно нужно иметь доступ к значениям моей формы, используя имя формы (вместо document.form [0]), есть идеи, почему document.myform.mylink.value не работает?

<form name="myform">
<table>
<tr><td valign="middle" align="center">
    <div id="textResponse"></div>
</td></tr>
<tr><td height="30" valign="middle" align="center">
    <input name="mylink" value="Enter a URL" size="31" />
</td></tr>
<tr><td valign="top" align="center">
    <a href="javascript:submitForm2();">Click</a>
</td></tr>
</table>
</form>

<script type="text/javascript">
function submitForm2(){
    //This one does NOT work:
    my_link = document.myform.mylink.value;
    //This one also does NOT work:
    //my_link = document.forms['myform'].mylink.value;
    //This one works:
    //my_link = document.forms[0].mylink.value;

    document.getElementById("textResponse").innerHTML="<p>"+my_link+"</p>";
}
</script>

1 Ответ

19 голосов
/ 13 октября 2010

Технически, что у вас должно работать нормально ... полный синтаксис ниже также должен работать:

var my_link = document.forms['myform'].elements['mylink'].value;

Если случайно ваша переменная в вашем «реальном» коде равна "mylink" , а не "my_link", вы получите сбои в IE, так как он будет автоматически ссылаться на элемент формы, а не на значение, которое вы пытаетесь извлечь.

Тем не менее, ваш код как опубликовано ... отлично работает в Firefox / IE (демонстрация здесь: http://jsfiddle.net/Ymg8W/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...