35

パラメータを getElementById にプッシュしましたが、この「is null」エラーはどこから来ているのでしょうか?

TypeError: document.getElementById(...) is null
[Break On This Error]   

document.getElementById(elmId).innerHTML = value;

Line 75  

これに加えて、これらの再生リストの写真のいずれかをクリックしない限り、タイトルと時間が表示されないのはなぜでしょうか?

4

8 に答える 8

31

これらすべての結果は次のnullとおりです。

document.getElementById('volume');
document.getElementById('bytesLoaded');
document.getElementById('startBytes');
document.getElementById('bytesTotal');

次のように updateHTML で null チェックを行う必要があります。

function updateHTML(elmId, value) {
  var elem = document.getElementById(elmId);
  if(typeof elem !== 'undefined' && elem !== null) {
    elem.innerHTML = value;
  }
}
于 2012-12-14T20:16:23.610 に答える
13

id渡された to を持つ要素がgetElementById()存在しないことを意味します。

于 2012-12-14T20:11:15.577 に答える
9

JQueryを使用して、クライアント側のスクリプトを開始する前に、ドキュメントのすべての要素の準備が整っていることを確認できます。

$(document).ready(
    function()
    {
        document.getElementById(elmId).innerHTML = value;
    }
);
于 2014-01-12T19:43:10.203 に答える
4

同じエラーが発生しました。私の場合、ページに同じ ID を持つ複数の div がありました。使用されている div の別の ID の名前を変更し、問題を修正しました。

したがって、要素が次のことを確認します。

  • ID で存在します
  • ID と重複していません
  • スクリプトが呼び出されるかどうかを確認する
于 2017-06-12T06:55:33.567 に答える
2

コードでは、次の関数を見つけることができます。

// Update a particular HTML element with a new value
function updateHTML(elmId, value) {
  document.getElementById(elmId).innerHTML = value;
}

後で、いくつかのパラメーターを指定してこの関数を呼び出します。

updateHTML("videoCurrentTime", secondsToHms(ytplayer.getCurrentTime())+' /');
updateHTML("videoDuration", secondsToHms(ytplayer.getDuration()));
updateHTML("bytesTotal", ytplayer.getVideoBytesTotal());
updateHTML("startBytes", ytplayer.getVideoStartBytes());
updateHTML("bytesLoaded", ytplayer.getVideoBytesLoaded());
updateHTML("volume", ytplayer.getVolume());

最初のパラメーターは「getElementById」に使用されますが、ID が「bytesTotal」、「startBytes」、「bytesLoaded」、「volume」の要素が存在しません。null を返すため、作成する必要があります。

于 2012-12-14T20:17:11.520 に答える