html部分
<form action="" method="post" onsbmit="return check()"
<input type="checkbox" value="A" name="one[]" /><span>A</span>
<input type="checkbox" value="B" name="one[]" /><span>B</span>
<input type="checkbox" value="C" name="one[]" /><span>C</span>
<input type="checkbox" value="D" name="one[]" /><spanD</span>
<input value="A" name="two[]" type="checkbox" /><span>A</span>
<input value="B" name="two[]" type="checkbox" /><span>B</span>
<input value="C" name="two[]" type="checkbox" /><span>C</span>
<input value="D" name="two[]" type="checkbox" /><span>D</span>
<input value="E" name="two[]" type="checkbox" /><span>E</span>
<span>其他</span>
<input name="two[]" type="text" />
<span id="ann"></span>
<input type="submit" value="确定">
JS部分:
<script>
function check(){
var one = document.getElementsByName("one[]");
var two = document.getElementsByName("two[]");
if (one[0].checked || one[1].checked) {
for (var i=0; i<two.length; i++) {
if (i <= 4) {
if (two[i].checked) {
return;

} else {
if (two[i].value != "") {
return;

}
}

                                   //以下两行代码执行不了
var message = document.getElementById("ann");
message.innerHTML='<font color="#FF0000">请将答案填写完整</font>';


}
                                    //但在这里就可以执行,我不明白了
        //var message = document.getElementById("ann");
//message.innerHTML='<font color="#FF0000">请将此题答案填写完整</font>';

</script>
帮我看看谢谢

解决方案 »

  1.   

    LZ的代码太乱了,花括号要对齐啊
    还有
    1.LZ你的标签没闭合(没有</form>)
    2.onsubmit拼错(不是onsbmit)看看改正后的代码吧<form action="" method="post" onsubmit="return check()">
    <input name="one[]" type="checkbox" value="A" /><span>A</span>
    <input name="one[]" type="checkbox" value="B" /><span>B</span>
    <input name="one[]" type="checkbox" value="C" /><span>C</span>
    <input name="one[]" type="checkbox" value="D" /><span>D</span>
    <br/>
    <input name="two[]" type="checkbox" value="A" /><span>A</span>
    <input name="two[]" type="checkbox" value="B" /><span>B</span>
    <input name="two[]" type="checkbox" value="C" /><span>C</span>
    <input name="two[]" type="checkbox" value="D" /><span>D</span>
    <input name="two[]" type="checkbox" value="E" /><span>E</span>
    <span>其他</span>
    <br/>
    <input name="two[]" type="text" />
    <span id="ann"></span>
    <input type="submit" value="确定">
    </form><script>
    function check()
    {
        var one = document.getElementsByName("one[]");
        var two = document.getElementsByName("two[]");
        if (one[0].checked || one[1].checked) 
        {
            for (var i=0; i<two.length; i++) 
            {
                if (i <= 4) 
                {
                    if (two[i].checked) {alert(2);return;} 
                } 
                else 
                {  
                    if (two[i].value != "") {alert(3);return;} 
                }
            }        //以下两行代码执行不了
            var message = document.getElementById("ann");
            message.innerHTML='<font color="#FF0000">请将答案填写完整</font>';
        }
    }
    //但在这里就可以执行,我不明白了
    //这里不在函数体内,当然会执行了
    //var message = document.getElementById("ann");
    //message.innerHTML='<font color="#FF0000">请将此题答案填写完整</font>';</script>
      

  2.   

    你的代码里有好几处错误:
    submit<form>没有右>,没有</form>
    然后你关键的错误
    在执行check函数时, 如果你的条件不通过就 return 返回了,所以没有执行你后面的两句
    而当条件通过时, 实际是执行了你那两句, 但是执行完后, 马上form提交, 提交的页面是自己, 相当于刷新了一下. 那两句的执行效果你没有看到我不知道你想要什么效果,但希望以下的代码对你调试有帮助
    <form action="" method="post" onsubmit="return check()">
    <input type="checkbox" value="A" name="one[]" /><span>A</span>
    <input type="checkbox" value="B" name="one[]" /><span>B</span>
    <input type="checkbox" value="C" name="one[]" /><span>C</span>
    <input type="checkbox" value="D" name="one[]" /><span>D</span> <input value="A" name="two[]" type="checkbox" /><span>A</span>
    <input value="B" name="two[]" type="checkbox" /><span>B</span>
    <input value="C" name="two[]" type="checkbox" /><span>C</span>
    <input value="D" name="two[]" type="checkbox" /><span>D</span>
    <input value="E" name="two[]" type="checkbox" /><span>E</span>
    <span> 其他</span>
    <input name="two[]" type="text" />

    <input type="submit" value="确定">
    </form><span id="ann">ann</span><script>
    function check(){
    var one = document.getElementsByName("one[]");
    var two = document.getElementsByName("two[]");
    if (one[0].checked || one[1].checked) {
    for (var i=0; i<two.length; i++) {
    if (i <= 4) {
    if (two[i].checked) {
    return;
    }
    } else {
    if (two[i].value != "") {
    return;
    }
    }
    } //以下两行代码执行不了
    var message = document.getElementById("ann");
    message.innerHTML='<font color="#FF0000">请将答案填写完整</font>'; }
    return false;
    }
    //但在这里就可以执行,我不明白了
    //var message = document.getElementById("ann");
    //message.innerHTML='<font color="#FF0000">请将此题答案填写完整</font>';</script>
      

  3.   

    但我希望在函数里的var message = document.getElementById("ann");
            message.innerHTML='<font color="#FF0000">请将答案填写完整</font>';
    这两行能够执行,我的判断条件没有问题,我用alert输出任何东西,在那个位置都能输出,就是innerHTML在那里没有结果
      

  4.   

    是不是在事件函数中,innerHTML不起作用???
      

  5.   

    2楼的你好,你的意思是说,如果我的条件成立,可以执行innerHTML,但是由于submit刷新了本页,所以就看不到了是么?我感觉说的有点意思
      

  6.   

    看了一下LZ的逻辑,好像是答案不完整就显示提示最后将代码改成这样,注意要阻止submit一定要返回false;<form action="" method="post" onsubmit="return check()">
    <input name="one[]" type="checkbox" value="A" /><span>A</span>
    <input name="one[]" type="checkbox" value="B" /><span>B</span>
    <input name="one[]" type="checkbox" value="C" /><span>C</span>
    <input name="one[]" type="checkbox" value="D" /><span>D</span>
    <br/>
    <input name="two[]" type="checkbox" value="A" /><span>A</span>
    <input name="two[]" type="checkbox" value="B" /><span>B</span>
    <input name="two[]" type="checkbox" value="C" /><span>C</span>
    <input name="two[]" type="checkbox" value="D" /><span>D</span>
    <input name="two[]" type="checkbox" value="E" /><span>E</span>
    <span>其他</span>
    <br/>
    <input name="two[]" type="text" />
    <span id="ann"></span>
    <input type="submit" value="确定">
    </form><script>
    function check()
    {
        var one = document.getElementsByName("one[]");
        var two = document.getElementsByName("two[]");
        var bOk = false;
        if (one[0].checked || one[1].checked) 
        {
            for (var i=0; i<two.length; i++) 
            {
                if (i <= 4) 
                {
                    if (two[i].checked) {bOk = true;} 
                } 
                else 
                {  
                    if (two[i].value == "") {bOk = false;} 
                }
            }
        }
        if (bOk)
        {
            return true;
        }
        else
        {
            //以下两行代码执行不了
            var message = document.getElementById("ann");
            message.innerHTML='<font color="#FF0000">请将答案填写完整</font>';
            return false;
        }
    }
    </script>