这是我的JavaScript函数:
function switch_div(firstID,secondID) {
if((document.getElementById(firstID).style.display == 'inline') &&
(document.getElementById(secondID).style.display == 'inline')) {
document.getElementById(firstID).style.display = 'none';
} else if(document.getElementById(firstID).style.display == 'inline'){
document.getElementById(firstID).style.display = 'none';
document.getElementById(secondID).style.display = 'inline';
} else if (document.getElementById(firstID).style.display == 'none') {
document.getElementById(firstID).style.display = 'inline';
document.getElementById(secondID).style.display = 'none';
}
}
这是我的链接和我要切换的两个 他们之间每次点击相同的链接:
<a href="#" onclick="switch_div('first_choice','second_choice');return false" style="position:relative">
<div id="first_choice" style="position:relative;">hello</div>
<div id="second_choice" style="position:relative;">bye</div>
这个JavaScript函数的链接在Opera中可以正常工作但不能正常工作 所有在Firefox中。为什么会这样?
答案 0 :(得分:3)
我没有看到跨浏览器问题:对我来说,它在Opera中也不起作用。这并不太令人惊讶:你正在检查内联显示的'style'属性,但是这两个div都没有'display:inline'。
无论哪种方式,内联都不是div的常用'显示'模型,你通常会'阻止'。
推荐:
<style type="text/css">
.hidden { display: none; }
</style>
<a href="#first_choice" id="togglelink">Clickety</a>
<div id="first_choice">
blah 1
</div>
<div id="second_choice">
blah 2
</div>
<script type="text/javascript">
function hideToggler(link, a, b) {
var state= link.hash.substring(1)==a.id; // set which div is shown initially from the link destination
link.onclick= function() { // toggle divs
state= !state;
a.className= state? 'hidden' : '';
b.className= state? '' : 'hidden';
return false;
};
link.onclick(); // hide one of the divs to begin with
}
hideToggler(
document.getElementById('togglelink'),
document.getElementById('first_choice'),
document.getElementById('second_choice')
);
</script>
答案 1 :(得分:2)
为两个div提供显示的样式属性。最好在课堂上给他们。希望这是你想要的。
<a href="#" onclick="switch_div('first_choice','second_choice');return false" style="position:relative">
<div id="first_choice" style="position:relative;display: inline">hello</div>
<div id="second_choice" style="position:relative;display: none">bye</div>
<script>
function switch_div(firstID,secondID)
{
if((document.getElementById(firstID).style.display == 'inline') && (document.getElementById(secondID).style.display == 'inline'))
{
document.getElementById(firstID).style.display = 'none';
}
else if(document.getElementById(firstID).style.display == 'inline')
{
document.getElementById(firstID).style.display = 'none';
document.getElementById(secondID).style.display = 'inline';
}
else if (document.getElementById(firstID).style.display == 'none')
{
document.getElementById(firstID).style.display = 'inline';
document.getElementById(secondID).style.display = 'none';
}
}
</script>