0

私はテーブルを生成するためにJavaScriptを使用していますが、テーブルを表示していますが、何らかの理由でテーブルと私はそれがどこから来ているのか分からない。私の関数はタグ名 "body"で要素を取得していて、divはbodyの内側にあり、divでinnerHTMLを使用しているためかもしれないと思いますか?私はボディの外側にdivを配置しようとしたと私はIDの名前で要素を取得しようとしたと私は未定義を取り除く方法を把握することはできません。他のコンテンツを入れるために他の部門を作ることができるように、私のテーブルを部門内で生成したいだけです。私はテーブルを体内に生成したいだけではありません。Javascriptを使用して生成されたHTMLテーブルは、メインのdivで未定義です

<body> 
    <div id="eobody"> 

    </div> 
    </body> 

と私のJSが含まれています:

私のHTMLは、私はDIVするボディを変更しようとした

var body = document.getElementsByTagName("body")[0]; //to start building the table 

document.getElementById("eobody").innerHTML = generate_table(paras1); 
//runs the function that generates my table inside eobody 

、およびとして、IDに基づいて要素を取得し、それを変更しましたボディーをより大きな部門に入れることはもちろん、何が原因であるかわからない

私が働いているのは、私のフィドルです。https://jsfiddle.net/msirkin/duw5nyqe/8/ [行112と行174は、私が話していた2行です]

答えて

1

generate_table()関数は値を返しません。この関数を呼び出すと、JavaScriptのデフォルト戻り値undefinedが返されます。

generate_table()が最後にすべて注入していることを考える:

tbl.appendChild(tblHead); 
document.getElementsByTagName("table").className = "tableizer-table"; 
tbl.appendChild(tblBody); 
body.appendChild(tbl); 

あなたが機能を呼び出した後divに何かを注入するために必要はありませんが。

divに注入したい場合はbodyの代わりに最後の行のappendChild()ソース要素として使用できます。例えば document.getElementById('eobody').appendChild(tbl);

+0

ああ、私は、関数が常に何かを返すことを認識しませんでした。だから、何かを返さなければならない場合、どうやってundefinedに戻らないようにすることができますか?あなたが明示的にテーブルを返す場合は、私がウェブページ用のテーブルを作成しているのですが、テーブル以外のものを表示したくないのですが、 –

+0

@MatthewSirkin明示的にテーブルを返す場合は、既に行っているようにHTML文字列またはNodeを構築できます。この場合、bodyに追加するのではなく、最後に 'tbl;'を返すことができます。次に 'eobody' divに結果を' appendChild() 'することができます。 'document.getElementById(" eobody ")。appendChild(generate_table(paras1));' - 私は実際の例としてあなたの手掛かりを更新し、更新しました:https://jsfiddle.net/jvdl/2oxcktye/ – Dymos

関連する問題