2015-01-31 18 views
1

我確定這已被回答某處,但我找不到我在找什麼,因爲我不知道如何解釋它。如何引用if語句中的元素

我會跟我的代碼

<script> 
function choose(element){ 
    var parent = element.parentNode; 
    var nextquestion = parseInt(parent.dataset.number)+1; 
    parent.style.display = "none"; 

    if parseInt(getElementsByClassName("QuestionGroup").dataset.number) == nextquestion { 
     WHATGOESHERE?.style.display = "inline"; 
    } 
} 
</script> 
<div class="QuestionGroup" data-number="1" style="display:inline;"> 
<button onclick="choose(this);">An Answer</button></div> 
<div class="QuestionGroup" data-number="2">Second Question</div> 

爲例所以基本上開始,如果用戶點擊該按鈕,選擇()將檢查哪些質疑按鈕的一部分。然後它會隱藏該組並取消隱藏第二個問題組。這一切都起到了我想要取消隱藏下一個問題的作用。

我使用if語句來檢查數據編號屬性的類「QuestionGroup」的所有元素,如果該屬性等於nextquestion變量,那麼我想更改該元素的樣式。問題是,我不知道如何實際引用該元素來改變樣式。

+0

['if'語句](http://www.ecma-international.org/ecma-262/5.1/#sec-12.5)需要括號括住條件。 – Oriol 2015-01-31 21:19:23

+2

if parseInt(getElementsByClassName(「QuestionGroup」)。dataset.number)== nextquestion不應該工作,因爲getElementsByClassName返回一個元素數組。你需要[單個元素] .dataset.number – 2015-01-31 21:20:19

+0

哦,geeze,你在開玩笑。 – Zei 2015-01-31 21:20:58

回答

0

啊哈,謝謝你們,我已經給了我極大的啓發。據我所知,JavaScript與我過去使用的其他語言有些不同。

基本上,你說getElementsByClass返回了一個顯然不會在那裏工作的元素數組,所以有一點Google使用了這個!

document.querySelector('[data-number="' + String(nextquestion) + '"]').style.display = "inline"; 

而不是我的可怕的if語句!

謝謝大家的幫助!

0
var parent = element.parentNode; 
var nextquestion = parseInt(parent.dataset.number)+1; 
parent.style.display = "none"; 

if (parent.getElementsByClassName("QuestionGroup")[nextquestion]) { 
    parent.getElementsByClassName("QuestionGroup")[nextquestion].style.display = "inline"; 
} 

很難彌補代碼的哪些部分涉及到什麼。這應該有效,但我不知道它是否會給出預期的結果。讓我知道或進一步詳細說明您的問題和代碼。

如上所述getElementsByClassName返回一個節點列表。你可以檢查index+1是否存在。如果這樣顯示它。