Javascript 该脚本在Chrome和IE中部分工作,但在Firefox中不工作

Javascript 该脚本在Chrome和IE中部分工作,但在Firefox中不工作,javascript,cross-browser,dom-events,Javascript,Cross Browser,Dom Events,下面的代码在chrome和IE中可以正常工作,但在Firefox中不能 这个想法是通过以下任何一个可能的链接,强制用户在前进之前选中“同意”框 <script type="text/javascript"> function agreeCheck() { valid = false; var agree = document.getElementById('agree'); if(isA

下面的代码在chrome和IE中可以正常工作,但在Firefox中不能

这个想法是通过以下任何一个可能的链接,强制用户在前进之前选中“同意”框

 <script type="text/javascript"> 
        function agreeCheck() 
        {

        valid = false;

        var agree = document.getElementById('agree');
            if(isAgree(agree)){
            valid= true;
            }

        return valid;
        } 

        function isAgree(elem)
        {
            if ( elem.checked == false )
                {
            Show_Stuff(agreespan, "true");
                return false;
            }
            else
            {
            Show_Stuff(agreespan, "false");
            return true;
            }
        }
        function Show_Stuff(warning,on_off)
        // Function that will swap the display/no display for
        // all content within span tags
        {

        if ((warning.style.display == "none")&&(on_off =="true"))
            {
            warning.style.display = "";
            }
        else
            {
            warning.style.display = "none";
            }


        }
</script>

    <input type="checkbox" name="agree" value="signed" id="agree">
I agree</input> <span ID="agreespan" style="display: none">
<font color="red">You must agree in order to proceed</font> 
                                    </span> 

 <button type="button" title="Proceedt" class="btn-proceed" onclick="if (agreeCheck()==true){ window.location='myURL'; } else{ return agreeCheck();}"></button>

<input type="image" src="anotherURL" title="myTitle"  onClick="return agreeCheck();"/>

这解决了chrome和IE浏览器的问题,现在这些浏览器运行正常。Firefox仍然没有完成我希望它完成的任务

问题在于iAgree函数。请尝试以下操作:

function isAgree(elem)
{
        if (!elem.checked == "Checked")
        {
            Show_Stuff(agreespan, "true");
            return false;
        }
        else
        {
            Show_Stuff(agreespan, "false");
            return true;
        }
}

希望它能解决这个问题。解决方案围绕“已选中”属性进行解析。

span\u tag.style.display用于布局目的,而不是隐藏或显示span标记
它在您的情况下不起作用,因为JavaScript可能正在崩溃。
尝试更改所有内容以使用以下代码

warning.style.visibility = "hidden";
warning.style.visibility = "visible";

在我看来,您可能无法直接通过其ID访问“agreespan”span标记。我不知道这是否与跨浏览器兼容。当你访问“同意”复选框时,你应该考虑使用“文档.GETEnEnEnyYByID”。一些无关的语法问题:你忘了用<代码> var >代码>语句来声明<代码>有效< /代码>,因为它是一个隐含的全局。你甚至不需要
valid
在那里,你可以在if中返回
true
,或者
false
如果它通过了if。不要将
“true”
“false”
作为字符串传递,您应该只使用
true
false
原语。谢谢,但这不起作用。事实上,它破坏了Chrome和IE中的“布局用途”功能?这不是我们在这里做的吗<代码>显示和
可见性
互不相同,但是它们都隐藏和显示元素,对于OP描述的场景,我认为
display
更合适,这样当
span
未显示时就不会留下空白。@nnnnnn您对显示样式的作用有严重的误解。去仔细阅读一下这个物业。style.display并不意味着隐藏和取消隐藏跨度标记。这就是可见标记的作用。如果您不希望在未显示时出现空白,则使用绝对定位
warning.style.visibility = "hidden";
warning.style.visibility = "visible";