繁体   English   中英

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

[英]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类型,因此这里elmntObject类型, nameObject类型, id2checkString类型。 因此,对id2check使用""''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM