2012-12-31 19 views
0

我有一个JavaScript功能,可以切换窗体的可见性。显示或隐藏具有两个链接的特定div的可见性

<script type="text/javascript"> 
function showHide(){ 
    var toggle = document.getElementById('form'); 
    if(toggle.style.display == 'none') 
     toggle.style.display = 'block'; 
    else 
     toggle.style.display = 'none'; 
} 
</script> 

它正在与此链接正常工作。

<a href="#" onclick="showHide()">Add new:</a> 

但是,当我在这个链接中使用这个功能,它不工作。点击此链接时,页面重新加载和隐藏的内容不会显示。

<a href="products.php?act=edit&id=1" onclick="showHide()">Edit</a> 

这里是演示: products.php

我想的都“新增:”同样的工作&“编辑”链接,以显示或隐藏了重新加载页面的形式。

+2

你期望什么?您链接到一个页面,以便替换当前内容,脚本丢失。 –

+0

改为使用PHP;设置一个SESSION变量或一个GET变量,这个变量将在页面间工作。 – bozdoz

+0

@dystroy这些链接对于相同的隐藏内容位于同一页面(products.php)。当我点击“添加新内容”或“编辑”时,我想要显示隐藏的内容。但是当我点击“编辑”时,它会重新加载页面而不显示内容。 – Moeen

回答

1

首先,可以简化功能:

function showHide(){ 
    var toggleStyle = document.querySelector('#form').style; 
    toggleStyle.display = toggleStyle.display ? '' : 'none'; 
}​ 

看到这个jsfiddle

其次,你的点击动作工作,但由于href触发页面刷新,它不可见。如果您想使用showHide,则可以在href中添加一个参数,如:<a href="products.php?act=edit&id=1&showform=1">,并在页面加载时使用showform值来触发可见性。或者,您可以使用cookie来“记住”表单显示状态。第三种方法是使用XmlHTTPRequest(XHR,aka Ajax)来防止页面刷新。

3

为vatiant你可以这样说:如果你要链接到另一页/重新加载当前页面(这导致所有状态

<script type="text/javascript"> 
function showHide(){ 
    var toggle = document.getElementById('form'); 
    if(toggle.style.display == 'none') 
     toggle.style.display = 'block'; 
    else 
     toggle.style.display = 'none'; 
    document.location.href = 'http://yourdomain.com/products.php?act=edit&id=1'; //<<<< 
} 
</script> 


<a href="#" onclick="showHide()">Add new:</a> 

但不understan什么=)

+0

我意识到这不是单行语句所必需的,但使用大括号是一种很好的做法,特别是当建议有人不使用JavaScript时(如果只是为了防止* next *问题为'我的'if'正在工作,现在不是.. *为什么?*“当事物更新/修改时)另外:'toggle.style.display = toggle.style.display =='block'?'none':'block';'浓缩一些东西= –

1

丢失),那么你需要一些将div的可见性传递到新页面的方法。你可以

<a href="products.php?act=edit&id=1&visible=formVisible" onclick="showHide()">Edit</a> 

您需要设置formVisible值在你切换功能,或动态修改链接...还有,你可以完成许多方面。

作为一个侧面说明,你应该使用triple equals in javascript

if(toggle.style.display === 'none')