getElementById(" ...")。当尝试使用string + variable作为id时,className为null

时间:2016-02-23 15:36:03

标签: javascript

我设法让代码在满足条件时更改具有功能的按钮的类。问题是我不想为所有元素重复此操作,但在使用document.getElementById('buy'+gen)而不是document.getElementById('buyhotdog')时它不起作用。我将在下面提供"工作代码"以及我试图开始工作的代码。

工作代码:

function changeButtonHD() {
    if (money < hotdog.cost) {
        document.getElementById('buyhotdog').className = 'buttongrey';
    }
    else {
        document.getElementById('buyhotdog').className = 'button';
    }
}

它适用于:使用window.onload激活的区间中的changeButtonHD();

非工作代码:

function changeButtonBC(gen) {
    if (money < gen.cost) {
        document.getElementById('buy'+gen).className = 'buttongrey';
    }
    else {
        document.getElementById('buy'+gen).className = 'button';
    }
}  

我试图让它与changeButtonHD(hotdog);

一起使用

2 个答案:

答案 0 :(得分:2)

此处:gen.cost您显示gen是一个名为cost的属性的对象。

此处:'buy'+gen您使用get,就好像它是一个字符串一样。除非您已覆盖.toString(),否则"[object Object]"将不是"hotdog"

您似乎正在尝试使用最初保存传递给changeButtonHD的值的变量的名称,但您不能(因为您传递了它的值而不是其名称)。

使"hotdog"该对象上的属性值,然后使用'buy' + gen.name

答案 1 :(得分:1)

gen类型是对象,所以如果你想获得gen值,你的gen变量格式应该是这样的

WebView webview = ...;
String path = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.imprint);
webview.loadUrl(path);

}