如何判断我的元素是否需要innerHTML或值
我正在使用JavaScript在我的网站上运行一些AB测试。我可以用element.innerHTML = "Text that I want"
更改<button>
的文字,但使用相同的策略我无法更改<input type="submit">
的文字。相反,我可以使用element.value = "Text that I want"
更改提交按钮的值,但不能以这种方式更改<button>
的文本。如何判断我的元素是否需要innerHTML或值
所以我的问题是,我怎么能知道哪个函数需要在特定元素上使用,以便我可以创建一个算法来处理每种类型的元素?
总之:如何知道是以编程方式使用element.innerHTML
还是element.value
?
注意: jQuery是不允许的。
示例 - 以下代码将类名称作为输入并更改整个页面中的元素。有时<input>
可能具有识别类别,但有时可能是<div>
,<button>
或<p>
。
var execute = function(experimentName, variation){
var elements = document.getElementsByClassName(experimentName);
for (var j = 0; j < elements.length; j++) {
if (typeof(variation) == "function")
{
variation.call(elements[j]);
}
else
{
elements[j].value = variation;
//elements[j].innerHTML = variation;
}
}
};
如果你正在尝试做它在一个通用的方法,你可以做针对instanceof
检查输入元素的interface class:
if(element instanceof HTMLInputElement){
element.value = "foo";
} else {
element.innerHTML = "foo";
}
就像你知道如何在HTML中使用那个元素一样。
innerHTML
设置元素的内容; value
设置元素的value=""
属性。
我怎样才能改变一个'submit'和的'value'的'一个'button'的innerHTML'具有相同的代码? – 2015-02-08 18:34:10
只有少数几个使用'value'的元素,所以你可以创建一个列表并为它们设置一个例外。 – MightyPork 2015-02-08 18:38:13
@MightyPork够公平的,我认为可能有更优雅的方式。 – 2015-02-08 18:40:07
不错。 http://jsfiddle.net/qqvpy1se/1/ – 2015-02-08 18:58:36
伟大的方法。你把它带到下一个层次。 – roshan 2015-02-08 19:01:20