2016-04-09 6 views
-2

私は簡単な性格のクイズを作るのに役立つjavascriptを使用しています。簡単? 問題が1つあります。最後の質問では、私は "finalPage"と呼ばれるIDをつかむためにjavaを取得し、実際に "finalPage"と言っているかどうかを調べるifステートメントを持っています。奇妙なことに、それは間違っていると仮定します。私はまた、単語の長さを取得し、数字と一致させるが、無駄にしようとしました。ここにコードがあります。 また、単語が一致することを確認しました。私は何が起こっているのか分かりません。可変の文字列は私に長さを与えません

HTML:

 <div id="finalQuestion" data-next="finalPage"> 
      <h2> Question 10, Once you finish do this again! </h2> 
       <h3> Pick the best Genre </h3> 
        <div class="button" data-group="Keyboard"> Thriller </div> 
        <div class="button" data-group="Brass"> Comedy </div> 
        <div class="button" data-group="Woodwind"> Romance </div> 
        <div class="button" data-group="Guitar"> Action </div> 
        <div class="button" data-group="Percussion"> Horror </div> 
     </div> 
    </div> 

    <div id="finalPage"> 
     <div id="GuitarPage"> 
      <h2> Congratulations! You will be turned into a...</h2> 
       <h1> Guitar Instrument! </h1> 
        <!-- insert image --> 


     </div> 

     <div id="BrassPage"> 
      <h2> Congratulations! You will be turned into a...</h2> 
       <h1> Brass Instrument! </h1> 
        <!-- insert image --> 


     </div> 

     <div id="WoodwindPage"> 
      <h2> Congratulations! You will be turned into a...</h2> 
       <h1> Woodwind Instrument! </h1> 
        <!-- insert image --> 


     </div> 

     <div id="PercussionPage"> 
      <h2> Congratulations! You will be turned into a...</h2> 
       <h1> Percussion Instrument! </h1> 
        <!-- insert image --> 


     </div> 
     <div id="KeyboardPage"> 
      <h2> Congratulations! You will be turned into a...</h2> 
       <h1> Keyboard Instrument! </h1> 
        <!-- insert image --> 


     </div> 
    </div> 

相続人はJavascriptを:

var thispage = this.parentElement; 
thispage.style.display = "none"; 

var nextQuestion= document.getElementById(thispage.dataset.next); 
if (nextQuestion == "finalPage") 
{ 
    if(Guitar > Percussion && Brass && Keyboard && Woodwind) 
     { 
     document.getElementById("Guitar").style.display ="none"; 
     } 

     if(Percussion > Guitar && Brass && Keyboard && Woodwind) 
     { 
      document.getElementById("Percussion").style.display ="none"; 

     } 

    if(Brass > Percussion && Guitar && Keyboard && Woodwind) { 
     document.getElementById("Brass").style.display ="none"; 
    } 

    if(Keyboard > Percussion && Guitar && Brass && Woodwind) { 
     document.getElementById("Keyboard").style.display ="none"; 
    } 

    if(Woodwind > Percussion && Guitar && Keyboard && Brass) { 
     document.getElementById("Woodwind").style.display ="none"; 
    } 
    //show final page 
} 

else { 
    nextQuestion.style.display = "block"; 
} 

}

+1

をあなたがして、 ''のdocument.getElementById()を比較しようとしています文字列。たぶんあなたはIDを引き出してそれを比較したいのですか?おそらくあなたがそのIDを使ってgetById呼び出しを行ってからではないでしょう...あなたが何をしようとしているのかは分かりません。 – csmckelvey

+0

document.getElementByID(変数に変換すると)は文字列になりませんか? – user3500310

+0

document.getElementByIDが "finalPage"の場合に表示する5つのページのうちの1つを取得しようとしています – user3500310

答えて

1

getElementByIdはない、それはIDが、DOM要素を返します。あなたがつかんできた要素は「finalPage」のIDを持っているかどうかを知りたい場合は、明示的にチェックする必要があると思います:

if (nextQuestion.getAttribute('id') === 'finalPage') { 

    // ... 

} 
+0

これは動作していないようです。 その要素をつかんで文字列に変換する方法はありますか? – user3500310

+0

これは、「文字列に変換する」という意味に依存します。 DOM要素は複雑で、その位置、スタイル、いくつかの操作関数など、多くの多くのプロパティを持っています。私が投稿した答えは、要素のidを文字列として取り出す方法です。それがうまくいかない場合は、受け取ったDOM要素が未定義であるか、id属性がありません。 'this.dataset.next'に期待している価値があると確信していますか? – Mark

+0

ええと、私はクロムのデバッガを通過し、nextQuestionにはId = "finalPage"があると言いました。これは、デバッガをステップ実行したり、いくつかのロギングライン( 'console.log(this.dataset.next) 'など) あなたのコードは何かを 'id'以外に入れておくべきですか? – user3500310

関連する問題