有时我想更新随机DOMNode的值,但我不确定它确实是什么类型的元素。我假设我需要一些代码块来检查它是什么类型的节点。
if(el.tagName == 'input' ) el.value = "foo";
if(el.tagName == 'div') el.innerHTML = "foo";
或者即使存在某些属性:
var value = "foo";
if(el.value != "undefined" && el.value != value) {
el.value = value;
}
if(el.innerHTML != "undefined" && el.innerHTML != value) {
el.innerHTML = value;
}
el .nodeType列出了几种基本类型,但它们只是基本的节点类型。
更新任何类型的元素显示的最佳方法是什么?
更新:@dfsq有个好主意。
el["value" in el ? "value" : "innerHTML"] = value;
但是,它似乎不适用于任何元素:
["value" in document.createElement('li')] // true
更新2 严格类型检查可能是一个解决方案:
document.createElement('input').value
""
document.createElement('li').value
0
document.createElement('div').value
undefined
document.createElement('textarea').value
""
注意:除非您想指出how jQuery does it
,否则不要使用jQuery解决方案答案 0 :(得分:0)
似乎el.value
上的类型检查是要走的路:
var els = ['p', 'div', 'li', 'a', 'input', 'textarea'];
for (var i in els) {
var el = document.createElement(els[i]); el.value = 'foo'; console.log(el.value);
}
el[typeof el.value === "string" ? "value" : "innerHTML"] = value;