为什么有些js参数需要引号而其他参数不需要?

时间:2015-07-01 21:07:04

标签: javascript

我的页面上有这个功能:

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' >

1 个答案:

答案 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;
        }
    } 

此处,elmntobject类型,因此您不需要使用""'',因此您使用this。您可以将""''String类型的内容一起使用。

还有一件事,您使用name.style.color表示即使name不是String类型,也是一个对象。您将String传递给document.getElementById(),即传递id,一个html元素ID,其类型为String,因此elmnt为类型为Objectname属于Object类型,id2check属于String类型。因此,对""

使用''id2check