2

テーブル td のテキストを jQuery で 1,1,1 から 1,2,3 に変更したいのですが、うまくいき
ません。私のコードで何が間違っていますか?

これは私の JavaScript 関数です。

    function reorder(targetId){
        var i = 1;
        jQuery.find(targetId).each(function(){
            jQuery(this).attr("innerHTML", i);
            i ++;
        });
    }

私のhtmlコード。

<form>
    <input type="button" onClick="reorder('#index');" value="test"/>
    <table>
        <tr><td id="index">1</td></tr>
        <tr><td id="index">1</td></tr>
        <tr><td id="index">1</td></tr>
    </table>
</form>
4

2 に答える 2

3

あなたはそこに少し混ざったものを持っています。これを試して...

function reorder(selector){
     jQuery(selector)
      .find('tr td:first-child')
      // Remove the + 1 if you want it to start at 0.          
      .html(function(i) { return i + 1; });
}

ここにいくつかの変更があります...

  • 引数変数をより明確に変更しました。
  • ではなく、jQuery('selector') を使用できますjQuery.find()
  • メソッドを使用できますhtml()

別の jQuery ライブラリを使用していない場合 (または使用するつもりがない場合) は、$which よりも短いものを使用できることにも言及する価値がありますjQuery

HTMLも修正しました

<form>
    <input type="button" onclick="reorder('#my-table');" value="test"/>
    <table id="my-table">
        <tr><td>1</td></tr>
        <tr><td>1</td></tr>
        <tr><td>1</td></tr>
    </table>
</form>

id同じ値を持つ複数の属性を使用することは有効なマークアップではないことを忘れているかもしれません。そこでクラスを使用することも、完全に省略することもできます。有効なマークアップは気にしないかもしれませんが、ブラウザーの CSS と JavaScriptは、属性が一意であることを期待するときに (現在または将来) いくつかの奇妙なことを行う可能性があります。id

于 2010-03-19T05:34:52.133 に答える
1

i値の増分式を変更する必要があると思います。

function reorder(targetId){
        var i = 1;
        jQuery.find(targetId).each(function(){
            jQuery(this).attr("innerHTML", i);
            i++; // Before that it was i ++ 
        });
    }
于 2010-03-19T05:37:33.173 に答える