0

ID が存在しない場合、スクリプトは中断します。なんで?

the_lis をキャッシュする方法は?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
<script>
window.onload = function(){
alert('this will alert');
var the_id = document.getElementById('a_id_that_does_not_exist'),
the_lis = the_id.getElementsByTagName('li');
alert('this will NOT alert');
}
</script>
</body>
</html>
4

4 に答える 4

1

最初の要素が存在しないため、the_idになりますnullgetElementsByTagNameメソッドを on で呼び出すnullと、エラーが発生します。

于 2012-07-31T00:31:33.830 に答える
0

最初にステートメントthe_idを使用して存在するかどうかを確認する必要があります。そうしないと、例外がスローされます。if

window.onload = function(){
alert('this will alert');
var the_id = document.getElementById('a_id_that_does_not_exist');
if (the_id != undefined)
    the_lis = the_id.getElementsByTagName('li');
alert('this will NOT alert');
}
于 2012-07-31T00:31:00.517 に答える
0

the_idは null で、メソッドはありnullませんgetElementsByTagName。当たり前。

コードを記述する前に ID が存在することを確認するか、次のように明示的に確認してください。

var the_lis = the_id ? the_id.getElementsByTagName('li') : [];
于 2012-07-31T00:31:25.207 に答える
0

私の理解では、getElementsByTagName は配列を返します。ただし、それが発生する前に、the_id が存在しないため、null または未定義である必要があります。したがって、null インスタンスで getElementsByTagName を呼び出そうとしています。

(該当しない場合を除き) jquery を使用して何をしようとしているかを実行し、firebug を使用して JavaScript をデバッグすることをお勧めします。

于 2012-07-31T00:36:37.630 に答える