JavaScript innerHTML通过表单对象

时间:2013-11-16 22:39:38

标签: javascript html forms

我有一个表格,我希望在同一页面中使用多次。是一个使用javascript的上传表单。问题是如何在每个表单中显示反馈消息,不能使用document.getElementById因为id将是相同的,所以我更改了表单的名称并通过document.forms访问表单元素。但是,正如您在下面的示例中看到的那样......

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Label Changing: form approach</title>
<script>
function ini(){
    var form = document.forms["myForm"];
    document.getElementById("myLabel").innerHTML = "Usual Way Working";
    form.myLabel.innerHTML = "My Label Text";
}
</script>

</head>

<body onload="ini();">
<form name="myForm">
    <label name="myLabel" id="myLabel"></label>
</form>
</body>
</html>

文本“我的标签文本”将不会显示,它会返回错误:TypeError:'undefined'不是对象(评估'form.myLabel.innerHTML =“我的标签文本”'),只有“常用方式”工作“仍然存在。为什么?我如何在标签槽内写字?

1 个答案:

答案 0 :(得分:0)

您不能以这种方式访问​​表单中的任何元素,只能控制。

你写过吗

<form name="myForm">
    <input id="myInput">

然后您可以使用form.myInput访问输入。但不是标签或其他元素。

你可以写form.getElementById('myLabel')

编辑:
如果要按名称而不是按ID访问任何元素,可以使用javascript querySelector函数。对于你原来的例子

var label = document.querySelector('form[name="myForm"] label[name="myLabel"]');
label.innerHTML = "My Label Text";

请参阅jsFiddle