1

我有一个 php 页面,其中包含一个我只想在单击链接后才显示的表格。

我的问题如下:我有一个设置为 display="none" 的 div

<div name="details" style="display:none;"> 

使用 javascript,我将其更改为内联表,或者只是阻止,对于这种情况无关紧要。

function showDetails(){
        var elems = document.getElementsByName("details");
        document.getElementById("dis").innerHTML = elems.length;
        for (var i=0; i<elems.length; i++)
            elems[i].style.display = "inline-table";
    }

当我单击触发此脚本的链接时,div 内容会显示几分之一秒并再次消失。这是一个视频:http: //dl.dropbox.com/u/17289984/ SRFile2012_9_9_22_43_58_463.avi

我已经检查了大约 5-6 页关于更改显示属性的谷歌链接,当然还检查了 stackoverflow,但没有找到相关的答案......

有人有线索吗?

提前致谢!

PS这里是我的完整代码: http ://codeviewer.org/view/code:299e

4

3 回答 3

3

请记住,您正在单击一个<a>标签,该标签通常用于链接,他们可以将您发送到另一个页面(这正是正在发生的事情)。你的 href 属性是空的,所以当你点击它时它会刷新页面。

试试这个: <a href="" onclick="showDetails();return false;">show details</a>

注意return false;。这将取消默认操作。

于 2012-09-09T19:59:51.487 回答
0

name属性不应该像那样使用(实际上,它已被弃用,除了表单字段外不应使用)。将您的代码更改为:

<table class="details">

并使用它来找到它们:

var elems = document.getElementByClassName("details");

此外,在设置 display 属性时,您应该使用“none”来隐藏一个元素,并使用一个空字符串将其恢复为浏览器默认值(可以从一个浏览器更改为另一个):

elem.style.display = ""; // remove "none" value to make it visible.

getElementByClassName 功能在旧浏览器中不存在。快速谷歌搜索将找到示例代码,使其在所有浏览器中都能正常工作。

此外,@Lian 是正确的,您应该在 onclick 中返回 false。

于 2012-09-09T20:02:14.597 回答
0

您提供的链接中的代码与您在此处发布的内容有所不同。它在其他代码中说您将可见性更改为仅可见。可见性的优先级低于显示。如果可见性可见但显示仍然没有,这意味着该事物仍然不可见,因为显示仍然没有显示。您必须完全忘记可见性,仅将显示无更改为显示块。

于 2012-09-09T20:02:14.737 回答