我有一个表格,我希望在同一页面中使用多次。是一个使用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 =“我的标签文本”'),只有“常用方式”工作“仍然存在。为什么?我如何在标签槽内写字?
答案 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。