我试图在我的表单中按名称获取元素,但由于某种原因我得到了这个错误:
未捕获的TypeError:frm.getElementsByName不是函数
这是我的代码:
function doc(id) { return document.getElementById(id); }
function switchFields() {
var e = doc("slcSubmit");
var sel = e.options[e.selectedIndex].value;
var frm = doc("frmSendmessage");
var messageFields = [frm.getElementsByName("name"),frm.getElementsByName("email")]; //List of objects
//Give each object a new class
for (var i=0;i<messageFields.length;i++) {
messageFields[i].class = "test";
}
}
答案 0 :(得分:7)
getElementsByName
不是可以应用于任何节点(only to document
)的函数。
我认为你要找的是frm.querySelector('[name="TheName"]')
答案 1 :(得分:1)
如果需要替换不需要Jquery的getElementsByName,可以使用以下函数。
//g is the dom element, cl is the value for the name attribute
function getElementsByName(g, cl) {
var e = [], b = g.childNodes, a, b, f, k;
for (a = 0; a <= b.length - 1; a += 1) {
if (b[a].getAttribute) {
if (cl == b[a].getAttribute("name")) {
e.push(b[a])
}
}
f = getElementsByName(b[a], cl);
for (k = 0; k <= f - 1; k++) {
e.push(f[k])
}
}
return e
}