2017-03-23 78 views
0

我已經嘗試了很多東西從這個網站,並不能讓我的JavaScript爲我的生活工作。有人可以看看我的代碼,並告訴我我錯過了什麼。我對JavaScript很陌生。我會很感激任何見解。Javascript - 從外部鏈接顯示隱藏的div與錨標記

var url = window.location.href; 
 

 
if (url.indexOf("/ans1/") > -1) { 
 
    document.getElementById('ans2').style.display = 'none'; 
 
    document.getElementById('ans1').style.display = 'true'; 
 
} else if (url.indexOf("/ans2/") > -1) { 
 
    document.getElementById('ans1').style.display = 'none'; 
 
    document.getElementById('ans2').style.display = 'true'; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="faq-row"> 
 
    <div class="container"> 
 
    <h2 class="row-heading">Frequently Asked Questions</h2> 
 
    <ul class="faq"> 
 
     <li class="faq-item"><a href="#ans1" class="faq-item-toggle"><i class="fa fa-angle-down faq-toggle-arrow"></i>OAC FAQ 1</a> 
 

 
     <div id="ans1" class="faq-item-answer"><a href="ans1"> 
 
    Answer.</a> 
 
     </div> 
 
     </li> 
 

 
     <li class="faq-item"><a href="#ans1" class="faq-item-toggle"><i class="fa fa-angle-down faq-toggle-arrow"></i>OAC FAQ 1</a> 
 
     <div id="ans2" class="faq-item-answer"><a href="ans2"> 
 

 
    Answer. 
 
    </a> 
 
     </div> 
 
     </li> 
 

 
    </ul> 
 
    </div> 
 
</div>

回答

1

display: true不是有效的CSS規則。改爲使用display: block

此外,您應該緩存您的DOM節點作爲變量,而不是重複調用getElementById

最後,您應該使用location.hash來確定哪個頁面已被選中。

編輯:作爲Super User has pointed out,你的錨標籤應該讀href="#ans2"而不是href="#ans1"爲好。不過,這個HTML錯誤不應該影響你的切換邏輯。

var hash = location.hash; 
 
var ans1 = document.getElementById('ans1') 
 
var ans2 = document.getElementById('ans2') 
 

 
if (hash === '#ans1') { 
 
    ans2.style.display = 'none' 
 
    ans1.style.display = 'block' 
 
    ans1.previousElementSibling.click() 
 
} else if (hash === '#ans2') { 
 
    ans1.style.display = 'none' 
 
    ans2.style.display = 'block' 
 
    ans2.previousElementSibling.click() 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="faq-row"> 
 
    <div class="container"> 
 
    <h2 class="row-heading">Frequently Asked Questions</h2> 
 
    <ul class="faq"> 
 
     <li class="faq-item"> 
 
     <a href="#ans1" class="faq-item-toggle"> 
 
      <i class="fa fa-angle-down faq-toggle-arrow"></i> 
 
      OAC FAQ 1 
 
     </a> 
 
     <div id="ans1" class="faq-item-answer"> 
 
      <a href="ans1">Answer.</a> 
 
     </div> 
 
     </li> 
 

 
     <li class="faq-item"> 
 
     <a href="#ans2" class="faq-item-toggle"> 
 
      <i class="fafa-angle-down faq-toggle-arrow"></i> 
 
      OAC FAQ 2 
 
     </a> 
 
     <div id="ans2" class="faq-item-answer"> 
 
      <a href="ans2">Answer.</a> 
 
     </div> 
 
     </li> 
 

 
    </ul> 
 
    </div> 
 
</div>

+0

我感謝你的幫助。我從@超級用戶做了你的更新和下面的更新。但是,當我將它添加到我的鏈接.org/faq-test /#ans1時,它仍將我帶到常見問題頁面,但未打開相應的常見問題解答。 –

+0

嗨我已經在您推薦的JavaScript中對我的變量進行了更新。當我有.org/faq-test /#ans1時,它會自動打開div,但它不顯示實際文本,它只是將「OAC FAQ 1」標題向下移動。 –

+0

您是否有更多的代碼提供切換功能?也許如果你把它全部編譯成一個JSFiddle並編輯你的問題,我可能會看到發生了什麼問題,但只給出這個代碼很難推斷你正在描述的問題。 – gyre

1

在這兩個鏈接你通過#ans1參考,你應該在第二個環節通過#ans2。 你也需要設置display: block屬性的JavaScript

var url = window.location.href; 
 

 
if (url.indexOf("/ans1/") > -1) { 
 
    document.getElementById('ans2').style.display = 'none'; 
 
    document.getElementById('ans1').style.display = 'block'; 
 
} else if (url.indexOf("/ans2/") > -1) { 
 
    document.getElementById('ans1').style.display = 'none'; 
 
    document.getElementById('ans2').style.display = 'block'; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="faq-row"> 
 
    <div class="container"> 
 
    <h2 class="row-heading">Frequently Asked Questions</h2> 
 
    <ul class="faq"> 
 
     <li class="faq-item"><a href="#ans1" class="faq-item-toggle"><i class="fa fa-angle-down faq-toggle-arrow"></i>OAC FAQ 1</a> 
 

 
     <div id="ans1" class="faq-item-answer"><a href="ans1"> 
 
    Answer.</a> 
 
     </div> 
 
     </li> 
 

 
     <li class="faq-item"><a href="#ans2" class="faq-item-toggle"><i class="fa fa-angle-down faq-toggle-arrow"></i>OAC FAQ 1</a> 
 
     <div id="ans2" class="faq-item-answer"><a href="ans2"> 
 

 
    Answer. 
 
    </a> 
 
     </div> 
 
     </li> 
 

 
    </ul> 
 
    </div> 
 
</div>

+0

我感謝你的幫助。我從你和@gyre做了更新。但是,當我將它添加到我的鏈接.org/faq-test /#ans1時,它仍將我帶到常見問題頁面,但未打開相應的常見問題解答。 –