Javascript没有进入if条件

时间:2014-02-28 04:37:03

标签: javascript html

我已经使用html和javascript工作了几天而且我已经陷入困境了。我需要回答一个mcq并显示它是对还是错 为什么没有输入if条件?

我刚刚使用GetElemntById放了一个简单的javascript,用.value放了.checked 这不是学校作业,这是我长期计划的一些事情

<html>
<head>
    <script>
        document.write("In javascript");
            function myFunction()
            {
                document.write("In the function");
                if(document.getElementById('a1').checked)
                {
                    document.write("in if");
                    var x = document.getElementById('a1').value
                    document.write(x);
                }else
                {
                    document.write("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                }

            }
    </script>
</head>

<body>

    <p> How much is 2+2 ?? </p>
    4 : <input type="radio" name="ans" id="a1" value="4"><br/ >
    5 : <input type="radio" name="ans" id="a2" value="5"><br/ >
    6 : <input type="radio" name="ans" id="a3" value="6"><br/ >
    7 : <input type="radio" name="ans" id="a4" value="7"><br/ >

    <button onClick="myFunction()">clickz</button>


</body>

</html>

5 个答案:

答案 0 :(得分:1)

如果在页面加载完成后调用它,

document.write()调用将清除网页上的所有内容,这会导致所有单选按钮消失。所以你不会通过document.getElementById得到任何东西。

如果要输出任何调试日志,请删除document.write并使用console.logalert

答案 1 :(得分:0)

加载文档后,您无法使用document.write。如果这样做,您的浏览器将打开一个替换当前文档的新文档,因此,您无法访问任何html内容。 这就是您document.getElementById()返回null的原因,并且无法检查属性checked

将您的document.write()替换为alert()/console.log()

<script>
    document.write("In javascript");
        function myFunction()
        {
            if(document.getElementById("a1").checked)
            {
                alert("in if");
                var x = document.getElementById('a1').value
                console.log(x);
            }else
            {
                alert("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
            }

        }
</script>

答案 2 :(得分:0)

<script>
        document.write("In javascript");
            function myFunction()
            {

                if(document.getElementByName('ans').checked)
                {
                    document.write("in if");
                    var x = document.getElementById('a1').value
                    document.write(x);
                }else
                {
                    document.write("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                }

            }
    </script>

只有在您检查第一个答案时,您的代码才有效,因为您仅使用id,将document.getElementById更改为document.getElementByName

答案 3 :(得分:0)

document.write

存在问题

如果在页面加载后调用document.write,它将删除所有以前的内容,这就是你的问题。

如果document.write在正文中,则没有这样的问题。

请参阅此主题以获取更多信息why is document.write a bad practise

答案 4 :(得分:0)

正如其他说法。主要问题是你的<“document.write(”在javascript中“);”

在完成条件之前,它会清除您的输入元素。

查看小提琴示例

点击here

< script > function myFunction() {
    if (document.getElementById('a1').checked) {
        alert("in if")
        var x = document.getElementById('a1').value
        alert(x);
    } else {
        alert("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    }

} < /script>



<p>How much is 2+2 ??</p>
<div>
        <input type="radio" name="ans" id="a1" value="4"/>
        </br>
        <input type="radio" name="ans" id="a2" value="5" />
        </br>
        <input type="radio" name="ans" id="a3" value="6" />
        </br>
        <input type="radio" name="ans" id="a4" value="7" />
        </br>
        <button onclick="myFunction()">Click me</button>
</div>