2011-11-16 58 views
0

我需要找到一種方法將可見div傳遞給javascript。這可能不是完成我想要完成的最好方法,所以我願意接受其他建議。將HTML和CSS傳遞給Javascript

我的所有網站內容均打開在一個疊加層中。在導航中點擊某個按鈕時,該內容會在疊加層中打開。當單擊另一個按鈕時,該內容將替換疊加層中的當前內容。等等。

最好的標識符(我已經發現了),它的覆蓋是開放的,是(CSS)display:block ...
和所有隱藏的div是display:none ....

所以,我想通過這DIV有display:block給JavaScript(注:所有div的具有唯一的ID)

我敢肯定,這是一件很容易的,但我似乎無法找到它......

預先感謝您時間!!

+0

那麼最簡單的方法來實現你所說的只是在javascript中製作一張地圖。 因此,爲第一個屏幕設置'var a = 0;',爲第二個屏幕設置'a = 1'等 然後只需在需要更新可見性時檢查變量? – Yuri

+1

我很好奇爲什麼你不只是從點擊事件中捕獲id。如果你把id放在一個變量中,顯示的最後一個將永遠在那裏。 – COBOLdinosaur

+0

@Yuri你失去了我在那裏,我不是很棒的JS .... – Brett

回答

2

JS中的每個HTML元素都有style屬性。你可以閱讀,並通過調用例如

document.getElementById('id').style.display 

改變的元素風格所以你不需要任何東西傳遞給JS,它已經存在。

+0

當然,但這種複雜性遠遠高於跟蹤全局變量。 – Yuri

+0

然後,這會傳遞元素的ID到JS作爲一個變量命名爲相同的HTML元素?? – Brett

+0

我不完全理解你的問題,但我試圖更具體。 在JS中,你只需要這個覆蓋div的標識符,你可以將它們存儲在數組中。然後你可以遍歷這個數組,並檢查女巫元素是否可見,如下所示: 'var ids = ['id1','id2']; (var i = 0; i Krzysztof

0

通過閱讀你的問題,它聽起來像你需要確定哪些div是可見的。最簡單的方法是向所有包含內容的div添加一個類,然後可以使用document.getElementsByClassName()獲取它們的列表,並根據blockdisplay屬性循環查找哪一個可見。

<div class="content" style="display: none";>a</div> 
<div class="content" style="display: block;">b</div> 
<div class="content" style="display: none";>c</div> 
<div class="content" style="display: none";>d</div> 
<div class="content" style="display: none";>e</div> 

var elements = document.getElementsByClassName("content"); 

for(i = 0; i < elements.length; i++) 
{ 
    if (elements[i].style.display == 'block') 
    { 
      // elements[i] = this is the visable div 
      alert('This elements[i] has a display of block; contents = ' + elements[i].innerText); 
    } 
} 

上面的腳本會輸出/ alert'b',因爲它是可見的div。 Fiddle link

+0

謝謝傑夫。每次顯示更改時都會更新嗎?以及我需要在下一個功能中使用的輸出是什麼?它只是輸出「b」? – Brett