JavaScript - 如何根据元素设置innerHTML /值

时间:2014-01-24 18:17:50

标签: javascript html innerhtml

是否有办法通过检查元素值是否使用innerHTMLvalue来设置元素值,同时要记住表单元素是唯一要采用value的元素,例如:

if(elem.tagName.toLowerCase() == "div" || elem.tagName.toLowerCase() == "a") //e.t.c
{
    elem.innerHTML = "Blah blah blah";
}
else
{
    elem.value = "Blah blah blah";
}

我是否必须为每个不是表单元素的元素执行此操作,还是有更好的方法?

5 个答案:

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

fiddle

答案 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";