我的页面上有这个功能:
function selected(elmnt, name, id2check) {
var x = document.getElementById(id2check).checked;
if(x == false) {
elmnt.style.backgroundColor = "#18436C";
name.style.color = "#f9FfFf";
document.getElementById(id2check).checked = true;
} else {
elmnt.style.backgroundColor = "transparent";
name.style.color = "#18436C";
document.getElementById(id2check).checked = false;
}
}
通过的第一个参数是#34;这个"它不需要引号。另外两个分别是div和输入(复选框)的id名称。该函数的唯一方法是第三个参数有引号但第二个参数不是。这是为什么?
<div id="abbsmalone_container" onclick="selected(this, abbsmalone_name, 'abbsmalone_select')">
<input type="checkbox" class="selections" name="abbsmalone_select" id="abbsmalone_select" value="yes" checked='checked' >
答案 0 :(得分:1)
那是因为id2check
是一个String类型。所有字符串类型必须与""
或''
表示法一起使用,同时将值分配给String
类型的变量,或者它必须使用&#34;& #34;或者&#39;&#39;或者应该是String
类型。还有一件事,你不需要使用它,if(x == false)
这里x是一个布尔值,所以条件应该是if(!x)
,因此你的代码看起来像,
function selected(elmnt, name, id2check) {
var x = document.getElementById(id2check).checked;
if(!x) {
elmnt.style.backgroundColor = "#18436C";
name.style.color = "#f9FfFf";
document.getElementById(id2check).checked = true;
} else {
elmnt.style.backgroundColor = "transparent";
name.style.color = "#18436C";
document.getElementById(id2check).checked = false;
}
}
此处,elmnt
是object
类型,因此您不需要使用""
或''
,因此您使用this
。您可以将""
或''
与String
类型的内容一起使用。
还有一件事,您使用name.style.color
表示即使name
不是String
类型,也是一个对象。您将String
传递给document.getElementById()
,即传递id
,一个html元素ID,其类型为String
,因此elmnt
为类型为Object
,name
属于Object
类型,id2check
属于String
类型。因此,对""
''
或id2check