1

我正在使用 JavaScript。我面临一个问题,即我想在 div 标签周围动态放置边框。我的代码如下:

function myfunction(var1) {
    if (document.getElementById(var1).style.border = "0px") {
        document.getElementById(var1).style.border = "1px solid green";
    } else {
        document.getElementById(var1).style.border = "0px";
    }
}

该代码第一次放置边框,但从未将其删除。即其他部分不起作用。任何帮助,将不胜感激。

4

5 回答 5

4

你的说法不正确。它应该是...

function myfunction(var1) {
    if(document.getElementById(var1).style.border == "0px") {
        document.getElementById(var1).style.border = "1px solid green";
    } else {
        document.getElementById(var1).style.border = "0px";
    }
}

在 JavaScript=中是赋值运算符。对于比较,您应该使用相等运算符,==.

您的语句分配0px给元素,然后停止。将else永远不会触发,因为任务true每次都会评估。

Comparison Operator             Example    Result
==  Equal To                    x == y     false
!=  Not Equal To                x != y     true
<   Less Than                   x < y      true
>   Greater Than                x > y      false
<=  Less Than or Equal To       x <= y     true
>=  Greater Than or Equal To    x >= y     false

正如下面评论中提到的,恒等运算符 ( ===) 实际上会比相等运算符 ( ==) 更好。标识 (===) 运算符的行为与相等 (==) 运算符相同,只是不进行类型转换,并且类型必须相同才能被视为相等。在这种情况下,一个字符串正在与另一个字符串进行比较,因此===可以使用它。

于 2013-01-09T13:40:15.753 回答
2

你的 if 应该包含逻辑运算符:

if(document.getElementById(var1).style.border = "0px")

if(document.getElementById(var1).style.border == "0px")
于 2013-01-09T13:40:38.087 回答
2

您的 if 条件始终为真:

style.border = "0px"

=为您的元素分配border = 0px始终正确的样式。您需要使用比较运算符==甚至更好的身份运算符===

style.border == "0px"

此外,如果第一次检查条件,您必须查看是否设置了属性,因为style.border只识别内联样式,因此很可能一开始就没有设置。

干净的方法是:

var el = document.getElementById(var1);
if(!el.style.border || el.style.border == "0px")
    el.style.border = "1px solid green";
} else {
    el.style.border = "0px";
}
于 2013-01-09T13:40:39.377 回答
0

每个人都发现了分配错误,但代码有时仍然可能无法正常工作。

边框属性值,当你读到的时候,不一定是你写的,而是浏览器的

它的解释和速记分配通常会继承缺失规范的默认属性。

计算机可能不会将边框的分配视为“0x”,而是视为

'solid black 0px',或者它可能不存在,除非作为单独的属性 -

无论你如何从字面上设置它。

仔细查看返回值的更具体的检查更可靠:

if(parseInt(document.getElementById(var1).style.borderTopWidth)){
    // the element has a non-zero border width
}
于 2013-01-09T15:30:09.217 回答
-3

你想做

if(document.getElementById(var1).style.border == "0px") // note two = signs

不是

if(document.getElementById(var1).style.border = "0px")

而且我还以为您想将边框设置为“无”

document.getElementById(var1).style.border = "none";
于 2013-01-09T13:40:33.150 回答