3

我正在使用 JavaScript 在我的网站上运行一些 AB 测试。我可以更改<button>'s中的文本,element.innerHTML = "Text that I want"但使用相同的策略我无法更改<input type="submit">'s 中的文本。

相反,我可以使用 更改提交按钮的值element.value = "Text that I want",但不能<button>以这种方式更改 a 的文本。

所以我的问题是,我怎么知道需要在特定元素上使用哪个函数,以便我可以创建一个处理每种类型元素的算法?

简而言之:我怎么知道是使用element.innerHTML还是以element.value编程方式?

注意:不允许使用 jQuery。

示例 - 这是一些将类名作为输入并更改整个页面的元素的代码。有时 a可能具有标识类,但有时<input>它可能是 a<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;
            }
        }
    };
4

2 回答 2

4

如果您尝试以通用方式执行此操作,则可以instanceof检查输入元素的接口类

if( element instanceof HTMLInputElement ){
    element.value = "foo";
} else {
    element.innerHTML = "foo";
}
于 2015-02-08T18:41:50.207 回答
2

就像您一开始就知道如何在 HTML 中使用该元素一样。

innerHTML设置元素的内容;value设置元素的value=""属性。

于 2015-02-08T18:31:51.320 回答