[英]why do some js parameters require quotation marks and others don't?
我的页面上有这个功能:
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;
}
}
传递的第一个参数是不需要引号的“this”。 另外两个分别是 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' >
那是因为id2check
是 String 类型。 在将值分配给String
类型的变量时,所有 String 类型都必须与""
或''
符号一起使用,要么必须使用 "" 或 '' 要么应该是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
使用""
或''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.