0

我有一个简单的函数来显示/隐藏 div 元素。我有一个javascript函数来做到这一点。我用 Opera 调试了这个。该函数在 div 元素上正确设置隐藏值。我可以看到 div 元素消失了。但是,当函数返回时,div 元素会重新出现。javascript函数在它自己的文件中:main.js:

function showhide(name){
    var elem = document.getElementById(name) ;
    if( elem.hidden == false ) {
        document.getElementById(name).hidden = true ;
    } else {
        document.getElementById(name).hidden = false ;
    }
}

的HTML是:

<div class=wrap><p>
<div class=sidebar>
    <FORM><input type="submit" value="Toggle" onclick="showhide('specname');"/></FORM></div>
<div class=main>main Div
    <div id="specname">collapsible text</div></div></p></div>.

我在 javascript 函数 showhide 中设置了调试断点,以查看该值是否设置正确。但是在函数返回时,该值被重置。

这可能是我想念的一些简单但似乎看不到的东西?有任何想法吗?谢谢!

答案解决了我的问题。我错过了提交重绘页面并且我丢失了更改的事实。我将 type=submit 更改为 type=button。我将表单删除为仅带有类型按钮的输入元素。那效果很好。谢谢大家的帮助!!!我真的很感谢你的回答!

4

5 回答 5

1

以下内容在某些浏览器中不会执行任何操作:

document.getElementById(name).hidden = true

将其更改为

document.getElementById(name).style.display = 'block' // and 'none' for the matching line

这是否使它做你需要的?


正如其他人所指出的,它也在提交页面 - 要么使用不同的元素,要么将函数更改为 start :

function showHide(e, name) {
     e.preventDefault();
     //do the toggle here
     return false;
 }
于 2013-04-06T20:14:14.987 回答
0

可能是因为当您单击按钮时表单提交并刷新页面?

于 2013-04-06T20:14:10.003 回答
0

问题是您正在使用提交控件,它将提交到服务器并刷新页面。您想停止提交或更改控件类型。以下两个都应该工作。我推荐第2个。

试试这个

<FORM><input type="submit" value="Toggle" onclick="showhide('specname'); return false;"/>

或这个

<input type="button" value="Toggle" onclick="showhide('specname');"/>
于 2013-04-06T20:15:23.897 回答
0

您不应该使用表单只是为了拥有一个执行某些操作的按钮。相反,尝试使用
<button onClick="showhide('specname');">Toggle</button>(并完全摆脱形式)

于 2013-04-06T20:16:34.620 回答
0

为你的 showhide() 试试这个。

function showhide(name){
    var elem = document.getElementById(name);
    (elem.style.visibility == 'hidden'?elem.style.visibility = 'visible':elem.style.visibility = 'hidden'); 
}

或类似地:

function showhide(name){
    var elem = document.getElementById(name);
    (elem.style.display== 'none'?elem.style.display= 'inline':elem.style.display= 'none'); 
}

也许尝试他们两个,看看你需要哪个。

干杯。

于 2013-04-06T20:17:48.717 回答