2013-03-10 77 views
0

就像我的描述说。隐藏的div不会显示在点击 - Javascript,没有Jquery

Fiddle

<div id="step2" class="question"> 
    <p>Step two:</p> 
    <div id="resultOne" class="script"> 
     <p>"Test Yes!</p> 
    </div> 
    <div id="resultTwo" class="script"> 
     <p>"Test No"</p> 
    </div> 
</div> 

上面的div没有响应按钮点击。似乎相应的JS函数甚至没有被调用。

我知道这可能是一个小的语法错误,但我无法找到它为我的生活。

谢谢你的帮助。

+0

你在哪里分配单击处理? – 2013-03-10 19:03:35

+0

ID'divShow'和'divHide'没有元素吗?你也没有使用传递的参数?你可能把事情搞混了吗? – w00 2013-03-10 19:04:23

+0

'divShow','divHide'和'divReveal'在哪里? – 2013-03-10 19:04:27

回答

1

我无法在小提琴中工作,它说nextStep功能不可用。 但NEXTSTEP的这个定义应该工作:

function nextStep(divShow, divHide, divReveal) { 
    var show = document.getElementById(divShow); 
    var hide = document.getElementById(divHide); 
    var reveal = document.getElementById(divReveal); 
    show.style.display = "inline-block"; 
    hide.style.display = "none"; 
    if (reveal.style.display == "none") 
     reveal.style.display = "block"; 
} 

,改变你的按钮来此?

<button type="button" onclick="javascript:nextStep('resultOne', 'resultTwo', 'step2')">Yes</button> 
<button type="button" onclick="javascript:nextStep('resultTwo', 'resultOne', 'step2')">No</button> 

注意,“围绕参数走在了的getElementById叫什么你试图让是名为divShow的元素,而不是变量内容引用的元素。

+0

啊,我明白了。你所说的话很有道理,但它似乎仍然不适合我。我觉得这不是使用按钮使div可见/不可见的正确方法 – Mrow 2013-03-10 19:37:42

+0

您的方法确实不会很好地扩展。然而,我对DOM的使用并不十分熟悉,可以为您提供更好的解决方案。但是,我们可以尝试让你的工作 - 开始。如果您查看JavaScript调试控制台,它会给出什么错误? – fredrik 2013-03-10 19:41:17

+0

我很抱歉,但我不知道如何使用调试控制台。你的意思是我的网页浏览器(FF)或JSFiddle中有吗? – Mrow 2013-03-10 19:43:51

0

看起来函数没有被调用,因为jsfiddle将您的javascript封装在一个匿名函数中,该函数在窗口加载时执行。您声明的函数的范围仅在该函数内。

相反,尝试安装它作为一个全球性的功能

window.nextStep = function (divShow, divHide, divReveal) { 
    var show = document.getElementById(divShow); 
    var hide = document.getElementById(divHide); 
    var reveal = document.getElementById(divReveal); 
    show.style.display = "inline-block"; 
    hide.style.display = "none"; 
    if (reveal.style.display == "none") 
     reveal.style.display = "block"; 
}