当为未定义的输入id调用getElementById时,javascript崩溃

时间:2016-02-20 10:54:47

标签: javascript getelementbyid

这是一个示例代码 我希望收到一个警告" undefined"而不是脚本崩溃 我怎样才能使它发挥作用?

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Click me</button>

<!-- <input type="text" id="demo"></input> -->

<script>
function myFunction() {
    var message = document.getElementById("demo").value;
    if ( message ) alert (message);
     else alert ("undefined");
}
</script>

</body>
</html>

5 个答案:

答案 0 :(得分:0)

如错误消息所示,您无法从value读取属性null。如果找不到该元素,则getElementById会返回null。所以你需要防范:

var element = document.getElementById("demo");
var message = element && element.value;
if (message !== null) {
    alert(message);
} else {
    alert("undefined");
}
如果元素不存在,则

message将为null,如果元素为value(可能为""),则为<{1}}

或者没有message

var element = document.getElementById("demo");
if (element) {
    alert(element.value);
} else {
    alert("undefined");
}

答案 1 :(得分:0)

你可以这样做:

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Click me</button>

<!-- <input type="text" id="demo"></input> -->

<script>
function myFunction() {
    var message = undefined
    if (document.getElementById("demo"))
     message = document.getElementById("demo").value;
    if ( message ) alert (message);
     else alert ("undefined");
}
</script>

</body>
</html>

答案 2 :(得分:0)

检查以下代码

<button onclick="myFunction()">Click me</button>

<!-- <input type="text" id="demo"></input> -->

<script>
function myFunction() {
   if (document.getElementById("demo"))
     var message = document.getElementById("demo").value;
    if ( message ) alert (message);
     else alert ("undefined");

}
</script>

</body>
</html>

enter image description here

答案 3 :(得分:0)

在这种情况下,document.getElementById("demo")的值为null,因此没有属性value为null。这就是你的脚本破解的地方。

尝试放

var message = document.getElementById("demo") && document.getElementById("demo").value;

答案 4 :(得分:0)

如果您的代码是:

,则会收到“未定义”的提醒
var message = document.getElementById("demo");

因为没有带有这种id的元素。

但是尝试访问不存在的元素的成员是错误的。