2013-01-09 100 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 
}