Javascript 如何判断我的元素是否需要innerHTML或value

Javascript 如何判断我的元素是否需要innerHTML或value,javascript,html,innerhtml,abtest,Javascript,Html,Innerhtml,Abtest,我正在使用JavaScript在我的站点上运行一些AB测试。我可以使用element.innerHTML=“我想要的文本”更改我的中的文本,但使用相同的策略,我无法更改中的文本 相反,我可以使用element.value=“我想要的文本”更改提交按钮的值,但不能以这种方式更改的文本 所以我的问题是,我如何知道在一个特定的元素上需要使用哪个函数,这样我就可以创建一个算法来处理每种类型的元素 简而言之:我如何知道是以编程方式使用element.innerHTML还是element.value 注意:

我正在使用JavaScript在我的站点上运行一些AB测试。我可以使用
element.innerHTML=“我想要的文本”
更改我的
中的文本,但使用相同的策略,我无法更改
中的文本

相反,我可以使用
element.value=“我想要的文本”
更改提交按钮的值,但不能以这种方式更改
的文本

所以我的问题是,我如何知道在一个特定的元素上需要使用哪个函数,这样我就可以创建一个算法来处理每种类型的元素

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

注意:不允许使用jQuery

示例-下面是一些代码,它将类名作为输入,并在整个页面中更改元素。有时
可能具有标识类,但有时可能是

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;
            }
        }
    };
var execute=函数(实验名称、变体){
var elements=document.getElementsByClassName(实验名称);
对于(var j=0;j
与您首先知道如何在HTML中使用该元素的方式相同


innerHTML
设置元素的内容
value
设置元素的
value=”“
属性。

如果您试图以通用方式执行此操作,则可以对输入元素的以下属性进行
instanceof
检查:


如何使用相同的代码更改
提交
按钮
内部HTML
?只有少数元素使用
,因此您可以只列出一个列表,并对它们进行例外处理。@mightyperk fair,我想可能有一种更优雅的方式。很棒的方法。你把它提升到了一个新的水平。
if( element instanceof HTMLInputElement ){
    element.value = "foo";
} else {
    element.innerHTML = "foo";
}