2013-01-09 102 views
1

我使用JavaScript。我面临一个问题,即我想动态地在div标签周围放置边框。我的COde如下:javascript样式比较不起作用

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"; 
    } 
} 

该代码首次放置边界,但从不移除它。即其他部分不工作。 任何帮助,将不胜感激。

+0

尝试使用jQuery $( “#VAR1”)的CSS( “边界”)。 – Dineshkani

+1

@Dinesh这是jQuery - 你看到一个jQuery标签?但Burhan,你应该缓存你的元素,因为你在dom-tree中进行了大量不必要的(但是昂贵的!)搜索。看看我如何缓存元素的答案。 – Christoph

+0

很希望所以它可能会有所帮助,但我已经完成了与兰阿特金的礼貌:) Thanx为您的良好回应太PS:我没有经验的JQuery以及:( –

回答

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 

正如下面的评论中提到,身份操作符(===)实际上要比等号(==)更好。身份(===)运算符的行为与相等(==)运算符的行为相同,除非没有进行类型转换,并且类型必须相同才能被视为相等。在这种情况下,字符串正在与另一个字符串进行比较,因此可以使用===

+1

缺少身份运营商和检查未定义的第一。 .. – Christoph

+0

感谢它的工作。!!! –

+1

@Christoph嗯,这是一个不同的问题,下次!:) –

-3

你会想要做

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

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

而且我还以为你会想设置边框为 '无'

document.getElementById(var1).style.border = "none"; 
2

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

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

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

你如果条件永远是正确的:

style.border = "0px" 

= assings您元素的样式border = 0px这是总是如此。您需要使用比较运算符==甚至更​​好的身份运营商===

style.border == "0px" 

也,你如果属性如果条件检查首次设置一下,因为style.border只承认inline-样式,因此很可能不会在开始时设置。

的清洁方法是:

var el = document.getElementById(var1); 
if(!el.style.border || el.style.border == "0px") 
    el.style.border = "1px solid green"; 
} else { 
    el.style.border = "0px"; 
} 
0

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

border属性值,当你读它,并不一定是你写的,但浏览器的

IT-的解释和速记任务往往继承失踪规格默认属性。

计算机可能没有看到分配给边境的加“0x”,但作为

“纯黑色0像素”,否则它可能不会,除非个别属性 - 存在

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

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

if(parseInt(document.getElementById(var1).style.borderTopWidth)){ 
    // the element has a non-zero border width 
}