-6

私はjsでテーブルを作成しようとしていますが、驚いたことに、私が何を意味するのかを知っていれば、公園を散歩することはできません。

HTML構造は次のようになります

<table>
<tbody>
<tr>
<th>info here info here</th>
</tr>
<tr>
<th>info here info here</th>
</tr>
</tbody>
</table>

代わりに私は取得しています

<table>
    <tbody>
    <tr>
    <th>info here info here</th>
    <th>info here info here</th>
    </tr>
    </tbody>
    </table>

これは私が使用しているJSであり、フィドルに完全なコードを追加しましたtotalFはnullを返します

 function totalF(){
    var body = document.getElementById('body')[0];
    var tbl = document.createElement('table');    
    var tblbody = document.createElement('tbody');
    var tndiv = document.getElementById('tdcontainer');

    for (var j = 0; j < payments; j++){
        var row = document.createElement('tr');

        temp=round(principal);
        while(temp>0){    
            if(tndiv != null){
                var cell = document.createElement('td');
                var ndiv =  round(temp);

                cell.appendChild(ndiv);
                row.appendChild(cell);
            }
            tblBody.appendChild(row);
            temp-=monthly;
            }
        tbl.appendChild(tblBody);
        body.appendChild(tbl);
        tbl.setAttribute("border", "2");
        }
    }

どんな助けでも大歓迎です。

編集:申し訳ありませんがjsfiddlehttp://jsfiddle.net/Q4eCa/に追加されまし

4

1 に答える 1

3

試す:

var body = document.body;

使用してdocument.getElementById('body')[0]いました...getElementByIdは配列を返さないため、機能しません。単一の要素を返します。イベントがない場合は[0]、実際に「body」のIDをbody要素に追加した場合にのみ機能します...

(フィドルを参照:http://jsfiddle.net/Q4eCa/2/

また、との両方tblbodyを使用しましtblBodyた... javascriptでは大文字と小文字が区別されるため、どちらかを選択する必要があります。

これもエラーをスローします:

var ndiv =  round(temp);
cell.appendChild(ndiv);

文字列をDOMノードに「appendChild」することはできないためです。代わりにこれを試してください:

var ndiv =  round(temp);
cell.innerHTML = ndiv;

それはあなたをそこへの道のほとんどに連れて行くでしょう。その時点でテーブルが作成され、「計算」機能にバグがあります。

于 2012-04-16T21:22:44.250 に答える