2017-05-26 17 views
0

JavaScript関数を使用してhtmlテーブルにヘッダーを追加しようとしています。スクリプト全体がかなり大きいので、htmlテーブルが作成されたhtmlスニペットと、そのテーブルにヘッダを追加する関数が含まれています。 (ボタンをクリックすると、この機能が呼び出されます)。 "VaRのHDR = tbs.createTHead();"javascript htmlテーブルへのテーブルヘッダーの追加

Locations.html:703 Uncaught TypeError: Cannot read property 'createTHead' of null 

ライン703は、に対応: は、しかし、私は次のエラーを取得しますコード行関数が "myTable"テーブルを見つけることができないと思われ、id線(私は思う)によってgetelementを実行するときnullを返しています..しかし、私はなぜわからないのですか?なぜこのテーブル要素が見つからないのでしょうか?

<div class="statsContainer"> 
    <div class="mainCont" id="mainCont"></div> 
    <div class="statsLoc" id="statsLoc"> 
     <table class="myTable" id="myTable"></table> 
    </div> 
    <div class="listLoc" id="listLoc"></div> 
</div> 

function locClick(strLN) { 
    RegionName.innerText = strLN;  
    var qry = "select Latitude, Longitude, Description from locations where Location_ID in (select Location_ID from locations where Location_Name = '" + strLN + "')";  
    clearDiv("mainCont"); 
    clearDiv("statsLoc"); 
    clearDiv("listLoc");   
    phpRequest(qry, "getDataFromPhp", processPHP, 1);  
    addTableHead("myTable", "help");   
}    
function addTableHead(tbName, txtHead) { 
    var tbs = document.getElementById("myTable"); 
    var hdr = tbs.createTHead(); 
    var rw = hdr.insertRow(0); 
    var cell = rw.insertCell(0); 
    cell.innerHTML = txtHead;} 
+0

申し訳ありませんが、私は機能上の閉じ中括弧を含めるのを忘れて - それは私のコードがあります。 – Jon

+0

あなたの質問を編集して修正してください。そして、余分な改行もすべて取り除いてください。 –

+1

エラーはわかりやすいものです。 'プロパティの読み込みができませんTHead of null'。だから、 'THead'にアクセスしている場所のコードを見て、それが' null'のオブジェクトであるため、呼び出しているオブジェクトを見てください。そのオブジェクトは 'tbs'です。 'tbs'がどこから来たのかを見ると、上の行でそれが見つかります。その行はうまく見えます(テーブルに 'myTable'の' id'があるので)。これは、あなたのコードがいつ実行されているのか疑問に思っています。 HTMLの解析が完了する前に 'addTableHead'関数が実行されていると、このエラーが説明されます。 –

答えて

0

私はgetElementById()はNULLを返すために見ることができる唯一の理由は、原因「mytableは」doesntのある関数が呼び出されたDOMに存在します。

テスト中に関数を「手動で」呼び出すのですか?

あなたはDOMにアクセスする機能を呼び出すためのDOMContentLoadedイベントを使用することができます。

document.addEventListener('DOMContentLoaded', function() { 
// Put JavaScript in here 
}); 
+0

あなたは正しいかもしれませんが、私たちはそれを知るのに十分な情報がないので、本当にこれが問題だとは言えません。これはコメントでなければならず、答えではありません。 –

+1

HTMLのように、ID「myTable」が存在することがわかります。 そのため、NULLが返される唯一の理由は、呼び出しが行われたときにIDが存在しないためです。 –

+0

これは当てはまりません。 OPはすべてのコードを共有していないので、「唯一の」理由がわからない。私はちょうどよい答えが質問によって通知されるものであることを理解するのを助けることを試みている。この質問はすべての情報を共有しているわけではないので(私たちはそれを複製することすらできません)、あなたの考えはコメントとして伝えられるほうがよいでしょう。 –

関連する問題