如何设置任何DOM元素的显示值?

时间:2014-07-18 19:59:42

标签: javascript html5 dom

有时我想更新随机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解决方案

1 个答案:

答案 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);
}

jsfiddle

el[typeof el.value === "string" ? "value" : "innerHTML"] = value;