0

すべての要素が入力されるわけではない多次元配列があります。その配列の内容を HTML テーブルに出力したいと考えています。私は現在これを持っています:

for (var basketRowJuice = 0; basketRowJuice < 10; basketRowJuice++){
    var outputName = "";
    outputName = (basketArray[0][basketRowJuice]);
    document.getElementById("basketJuiceName" + basketRowJuice).innerHTML = outputName;
}

for (var basketRowQuant = 0; basketRowQuant < 10; basketRowQuant++){
    var outputQuant = 0;
    outputQuant = (basketArray[1][basketRowQuant]);
    document.getElementById("basketJuiceQuant" + basketRowQuant).innerHTML = outputQuant;
}

for (var basketRowPrice = 0; basketRowPrice < 10; basketRowPrice++){
    var outputPrice = 0;
    outputPrice = (basketArray[2][basketRowPrice]);
    document.getElementById("basketJuicePrice" + basketRowPrice).innerHTML = outputPrice;
}

HTML テーブル:

<table id="basket" cellpadding="0" cellspacing="0" summary="This table lists the items you have in your shopping basket">
                                <caption>Your basket</caption>
                                <tr>
                                    <th scope="col">Juice name</th>
                                    <th scope="col">Number of crates</th>
                                    <th scope="col">Total price</th>
                                </tr>
                                <tr>
                                    <td id="basketJuiceName0"></td>
                                    <td id="basketJuiceQuant0"></td>
                                    <td id="basketJuicePrice0"></td>
                                </tr> 
                                <tr>
                                    <td id="basketJuiceName1"></td>
                                    <td id="basketJuiceQuant1"></td>
                                    <td id="basketJuicePrice1"></td>
                                </tr>   
                                <tr>
                                    <td id="basketJuiceName2"></td>
                                    <td id="basketJuiceQuant2"></td>
                                    <td id="basketJuicePrice2"></td>
                                </tr>
                                <tr>
                                    <td id="basketJuiceName3"></td>
                                    <td id="basketJuiceQuant3"></td>
                                    <td id="basketJuicePrice3"></td>
                                </tr> 
                                <tr>
                                    <td id="basketJuiceName4"></td>
                                    <td id="basketJuiceQuant4"></td>
                                    <td id="basketJuicePrice4"></td>
                                </tr>  
                                <tr>
                                    <td id="basketJuiceName5"></td>
                                    <td id="basketJuiceQuant5"></td>
                                    <td id="basketJuicePrice5"></td>
                                </tr>  
                                <tr>
                                    <td id="basketJuiceName6"></td>
                                    <td id="basketJuiceQuant6"></td>
                                    <td id="basketJuicePrice6"></td>
                                </tr>  
                                <tr>
                                    <td id="basketJuiceName7"></td>
                                    <td id="basketJuiceQuant7"></td>
                                    <td id="basketJuicePrice7"></td>
                                </tr>  
                                <tr>
                                    <td id="basketJuiceName8"></td>
                                    <td id="basketJuiceQuant8"></td>
                                    <td id="basketJuicePrice8"></td>
                                </tr>  
                                <tr>
                                    <td id="basketJuiceName9"></td>
                                    <td id="basketJuiceQuant9"></td>
                                    <td id="basketJuicePrice9"></td>
                                </tr>
                            </table>

ただし、配列が列 [0][9]、[1][9]、および [2][9] にのみ取り込まれている場合、出力の前に、HTML に空の行の大きなギャップが生じます。誰でもこれを行うためのより良い方法を提案できますか? おそらく、私のJavaScriptが、入力された配列要素ごとにテーブル行を挿入するようにするためですか?

私はプログラミングの初心者なので、間違いなく冗長で洗練されていないコードを許してください。

ありがとう、ジョン

4

1 に答える 1

1

おそらく、ループ内で次のようなものが必要になるでしょう。

var outputPrice = basketArray[2][basketRowPrice];
if (outputPrice) {
    // do something here.  the if statement will be true for non-null, non-empty, non-zero values of the var outputPrice.
}

また、3 つのループを次のようなものに置き換えることができることにも注意してください。

for (var j = 0; j < 10; j++) {
    for (var i = 0; i < 3; i++) {
        var outputName = basketArray[i][j];
        var outputQuant = basketArray[1][basketRowQuant];
        //.. do the rest of the code
    }
}

最後のステップは、ハードコードされた HTML を削除して動的に生成することです。以下はチェックなしなので、おそらく少しずれているので、DOM メソッドを調べてください。

var tbody = document.getElementById('basket').tbodies[0];
for (var j = 0; ...) {
    var tr = document.createElement('tr');
    tbody.appendChild(tr);
    for (var i = 0; ..) {
        var td = document.createElement('td');
        td.innerHTML = ...;
        tr.appendChild(td);
    }
}
于 2012-07-18T14:16:09.023 に答える