2015-09-20 23 views
-3

這個小小的JS應該在用戶點擊按鈕時運行。首先我檢查一個元素是否可見 - 然後根據檢查顯示/隱藏它。如果聲明未驗證正確,則使用Javascript

問題是,if語句每次驗證爲FALSE - 即使else語句將style.display設置爲我在if語句中所要求的。

在我的世界簡單的聲明將返回運行它真的每一秒時間......

if (d[0].style.diplay == 'block') { 
    $(d[0]).slideUp('slow'); 
} else { 
    d[0].style.display = 'block';  
} 

我是什麼監督?

+0

什麼是d [0]?如果d [0]是一個DOM對象,那麼如何在$(d [0])上使用它,或者如果它是一個查詢字符串,那麼如何將它用作d [0] .style.display =='block'?並注意style.display也可以保存塊以外的值。 – Ronnie

+0

@Ronnie'$()'接受DOM對象作爲參數。 – JJJ

+0

'var d = document.getElementsByClassName('。level4_class');' –

回答

1

diplay錯字...(缺少s
在做slideUp你可以直接去.is(":visible")
取決於你想要什麼(而不是從你目前的問題夾板),但看到這一點:

var $el = $(d[0]); 
if($el.is(":visible")){ 
    // is visible 
}else{ 
    // is slided up (not visible) 
} 

你也可以簡單地slideToggle()

var $el = $(d[0]); 
$el.slideToggle(); 

您可以檢查使用jQuery,你知道CSS規則...

var elDisplay = $el.css("display"); // "none", "block", "inline-block" ... 

因爲我看你使用jQuery已經......沒有必要的,但它的意思是讓你的生活更輕鬆 - 這樣反而的var d = document.getElementsByClassName('.level4_class');

使用

var $el = $('.level4_class'); 

做到這一點,你可以比從.css()方法回調訪問所需的CSS屬性:

$el.css("display", function(index, displayValue){ // Iterates over all .level4_class el. 
    if(displayValue==="block") { // ...checking for "block" value 
     // do something using $(this) 
    } 
}); 

jsbin demo

+0

'.is(「:visible」)'訣竅 - 但我似乎仍然無法理解爲什麼其他語句驗證爲FALSE。我應該很確定在else語句中,當我自己做顯示時,顯示設置爲阻塞;)在腳本第一次被觸發後,網站代碼也會說block。 –

+0

@UlrikPedersen您可以隨時添加更多基本代碼,如HTML,CSS和更多jQ/JS來創建可玩的測試用例。 –

+0

@UlrikPedersen請仔細閱讀https://api.jquery.com/visible-selector/ –