是否有办法通过检查元素值是否使用innerHTML
或value
来设置元素值,同时要记住表单元素是唯一要采用value
的元素,例如:
if(elem.tagName.toLowerCase() == "div" || elem.tagName.toLowerCase() == "a") //e.t.c
{
elem.innerHTML = "Blah blah blah";
}
else
{
elem.value = "Blah blah blah";
}
我是否必须为每个不是表单元素的元素执行此操作,还是有更好的方法?
答案 0 :(得分:0)
这样的事情应该有效,
if(elem.innerHTML) {
elem.innerHTML = 'blah blah blah';
}
else {
elem.value = 'other blah blah';
}
答案 1 :(得分:0)
var tagNameValues{
"INPUT": "value",
"TEXTAREA": "value",
"SELECT": "value",
"DIV": "innerHTML",
"TH":"innerHTML",
"TD":"innerHTML"
}
elem[tagNameValues[elem.tagName]] = "Blah blah blah";
答案 2 :(得分:0)
你可以写
var putValue = function (elem, value) {
if(elem.value === undefined) {
elem.innerHTML = value;
} else {
elem.value = value;
}
};
答案 3 :(得分:0)
试试这个:
var assignValue = function (elem, value) {
try{
elem.innerHTML=value;
elem.value=value;
}catch(e){
elem.value=value;
}
};
<强> DEMO 强>
答案 4 :(得分:0)
您可以检查value属性是否存在并相应地执行操作,如下所示:
if (elem.value) {
elem.value = "some value";
} else {
elem.innerHTML = "some value";
}
如果你愿意,这是一个较短的版本:
elem[elem.value ? "value" : "innerHTML"] = "some value";