![](/img/trans.png)
[英]How can javascript work perfectly in FireFox, but not work at all in other browsers?
[英]Simple Javascript doesn't work in FireFox (but does in ALL other Browsers)
我有這個代碼,我用它來在我的網站上的FAQ部分中顯示一些問題的答案。 單擊該問題,下面顯示包含答案的div。
它適用於Safari,Chrome,Opera甚至IE,但不適用於Firefox。
這些鏈接什么都不做。
任何想法,或任何更好的方法來做“常見問題”部分? 我已經在我的頁面中加載了jQuery,如果在那里可以做得更好,我不知道。 還是僅限CSS的解決方案?
這是我的代碼:
JS代碼:
<script type="text/javascript">
function toggle(tag) {
if (tag.style.display=='') {
tag.style.display='none'
} else {
tag.style.display=''
}
}
</script>
HTML代碼:
<a href="javascript: toggle(question1)">FAQ Question goes here</a>
<div id="question1" style="display:none">
<p>FAQ Answer goes here</p>
</div
因為您設置了要切換的元素的ID,所以您需要使用:
document.getElementByID(tag).style.display
而不僅僅是你的切換功能中的tag.style.display
。
嘗試將顯示設置為“阻止”
tag.style.display='block'
一種更簡單的方法是:
<script type="text/javascript">
function toggle(tag) {
tag.style.display = (tag.style.display == 'block') ? 'none' : 'block';
}
</script>
好吧,您的代碼中存在許多問題
首先,用分號結束你的線是很重要的。
tag.style.display='none'
應為tag.style.display='none';
其次,您必須在id上使用document.getElementById來獲取DOM元素
我會做這樣的事情:
function toggle(elementId) {
var tag = document.getElementById(elementId);
...
}
說真的,我建議你使用jquery,你不會遇到這種問題而且它不到30 Kbs。
這是你尋找的:
無論如何,您應該始終使用: document.getElementByID
來獲取某個元素。
EDITED
這取決於HTML的結構,如果我遇到這種情況:
http://www.jsfiddle.net/dactivo/Qcm4G/
我會這樣做:
$(".questionsheader").click(function(){
$(this).next("div").toggle(); }
);
其他一些考慮因素
既然你已經有了jQuery,試試這個:
$("#" + tag).toggle();
嘗試<a onclick='toggle(document.getElementById("question1"));'">
試試這個(添加了引號):
<a href="javascript: toggle('question1')">FAQ Question goes here</a>
<div id="question1" style="display:none">
<p>FAQ Answer goes here</p>
</div>
和(使用getElementById):
<script type="text/javascript">
function toggle(tag) {
tag = document.getElementById(tag);
if (tag.style.display=='') {
tag.style.display='none'
} else {
tag.style.display=''
}
}
</script>
更新 :對於jQuery解決方案,我會使用jQuery Tabs方法:
<a class="toggle" href="#question1">FAQ Question Link 1</a>
<div id="question1" style="display:none">
<p>FAQ Answer goes here</p>
</div>
<a class="toggle" href="#question2">FAQ Question Link 2</a>
<div id="question2" style="display:none">
<p>FAQ Answer goes here</p>
</div>
和JS:
<script type="text/javascript">
$(document).ready(function() {
$('.toggle').click(function() {
$($(this).attr('href')).toggle();
return false;
});
});
</script>
<a href="#" onclick="javascript:$(this).next().toggle();">Question</a>
<div style="display:none;">Answer</div>
或者更“通用”和清潔:
HTML:
<a class="question">Question 1</a>
<div class="answer">Answer 1</div>
<a class="question">Question 2</a>
<div class="answer">Answer 1</div>
CSS:
.answer{
display:none;
}
JS:
$(document).ready(function() {
$(".question").click(function(event){
$(this).next().slideToggle();
});
}
的slideToggle(); 或toggle(); 請享用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.