简体   繁体   English

无法使 javascript “显示隐藏” div 代码工作

[英]Can not get the javascript “show hide” div code to work

I CANNOT use jQuery on this project (client policy).不能在这个项目上使用 jQuery(客户政策)。

My html code is:我的 html 代码是:

<div style="display:none" id="dvAnswer<%#Eval("num")%>" class="TextFontBold">A: <%#Eval("answer") %></div>
<a id="btn<%#Eval("num")%>" href="javascript:toggle();">show answer</a>  

Javascript code is: Javascript 代码为:

    function toggle() {
            var ele = document.getElementById("toggleText");
            var text = document.getElementById("displayText");
            if(ele.style.display == "block") {
                ele.style.display = "none";
                text.innerHTML = "show";
            }
            else {
                ele.style.display = "block";
                text.innerHTML = "hide";
            }
    }   

I cannot get this code to work.我无法让这段代码工作。
Any suggestions to resolving this?有什么建议可以解决这个问题吗?

Here you need to pass two references to your toggle function, one to the target, and one to itself:在这里,您需要将两个引用传递给您的切换 function,一个给目标,一个给自己:

<div style="display:none" id="dvAnswer<%#Eval("num")%>" class="TextFontBold">A: <%#Eval("answer") %></div>
<a id="btn<%#Eval("num")%>" href="javascript://" onclick="toggle('dvAnswer<%#Eval("num")%>',this);">show answer</a>

(plus, it's is good practice to use onclick , not href for inline javascript) (另外,使用onclick是一种好习惯,而不是内联javascript的href

Then pass these references to your function:然后将这些引用传递给您的 function:

function toggle(target,me) {
            var ele = document.getElementById(target);
            var text = me
            if(ele.style.display == "block") {
                ele.style.display = "none";
                text.innerHTML = "show";
            }
            else {
                ele.style.display = "block";
                text.innerHTML = "hide";
            }
    }     

The ID of your element is not toggleText and I don't see an displayText element either.您的元素的 ID 不是toggleText ,我也没有看到displayText元素。

First your div doesn't have id="toggleText" and no id="displayText"首先你的 div 没有 id="toggleText" 也没有 id="displayText"

so what you need to do is create small algorithm for that所以你需要做的是为此创建小算法

function toggle(lnk) {
           var num = lnk.getAttribute('id').toString().replace('btn','');
            var ele = document.getElementById('dvAnswer'+num);
            if(ele.style.display == "block") {
                ele.style.display = "none";
                lnk.innerHTML = "show";
            }
            else {
                ele.style.display = "block";
                lnk.innerHTML = "hide";
            }
    } 

and your html should look like this你的 html 应该是这样的

<div style="display:none" id="dvAnswer<%#Eval("num")%>" class="TextFontBold">A: <%#Eval("answer") %></div>
<a id="btn<%#Eval("num")%>" onclick="toggle(this); return false;" href="#">show answer</a> 

It appears you are calling elements by the wrong IDs.看来您是通过错误的 ID 调用元素。 In your HTML, I do not see 'toggleText' or 'displayText' IDs for any of your elements.在您的 HTML 中,我没有看到任何元素的“toggleText”或“displayText”ID。

The ID looks dynamic from your example.从您的示例中,该 ID 看起来是动态的。 Perhaps just pass the object reference in your function:也许只是通过 function 中的 object 参考:

function toggle(objRef) {
        var ele = document.getElementById(objRef);
        var text = document.getElementById("displayText");
        if(ele.style.display == "block") {
            ele.style.display = "none";
            text.innerHTML = "show";
        }
        else {
            ele.style.display = "block";
            text.innerHTML = "hide";
        }
}

And HTML of:和 HTML 的:

<a id="btn<%#Eval("num")%>" href="javascript:toggle("dvAnswer<%#Eval("num")%>");">show answer</a>

Probably your id's in html are not the same as requested by javascript?可能您在 html 中的 id 与 javascript 要求的不同? This "should" work这个“应该”工作

<div style="display:none" id="toggleText" class="TextFontBold">A:<%#Eval("answer") %></div>
<a id="displayText" href="javascript:toggle();">show answer</a>  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM