1

商品のEANコードを取得し、それを商品のテーブルリストと比較して、idの入力ボックスをに更新する入力があるページで問題が発生していean_xxxxますoldValue+1。私の現在のコードは次のようになります。

function updateProductQty(ean) {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        if(inputs[i].id == "ean_" + ean)
        {
            inputs[i].value = Number(inputs[i].value) + 1;
        }
    }
}

EANコードの入力でこのコードを使用して呼び出すことonchange="updateProductQty(this.value);"

ここで問題となるのは、IDの入力ボックスがean_xxxxxテーブルの行内にあることです。また、前のTDタグの値と比較する必要があります。私が探している値は、次のようなHTMLで囲まれています。

<td>
    <h5 class="title">....</h5>
    <div><strong>...</strong> A252502</div>
    <dl class="item-options">
        <dt>...</dt>
        <dd>..</dd>
    </dl>
</td>
.... more <td>-tags
<td> ... <input id="ean_xxxx" .... /> ... </td>

ご覧のとおり、入力タグを見つけたとき、テーブルのどの行にいるのかわかりません。チェックを追加したい値は「A252502」です。

このサイトでは、Prototypeをjsフレームワークとして使用していますが、これまでの経験はありません。そのため、私は主に基本的なJSを使用していますが、GoogleはPrototypeソリューションで失敗します。

TDの内容を取得できれば、-tagとスペースを削除して値を取得できますが、どのように検索できますか?EANコードまたはこの内部記事IDの両方ではなく、どちらかを取得するため、DOMツリーに戻ることさえできません。したがって、inputs[i]最初から始める必要はありません。プロトタイプ構文であろうと基本的なJSであろうと、どんな助けでも大歓迎です。

4

1 に答える 1

1

私はなんとかそれを解決することができました。方法は次のとおりです。

function updateProductQty(ean) {
    var input = $("ean_" + ean);
    if (input) {
        input.value = Number(input.value) + 1;
    } else {
        var trs = $$('.order-tables tbody tr');
        for (var i = 0; i < trs.size(); i++) {
            if (trs[i].down('div')) {
                if (trs[i].down('div').innerHTML.split(" ")[1] == ean) {
                    trs[i].down('td').next(4).down('input').value = Number(trs[i].down('td').next(4).down('input').value) + 1;
                }
            }
        }
    }
}
于 2013-03-15T15:31:07.283 に答える