2

我想用 jQuery 将表 td 中的文本从 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 库(或不打算),您可以使用$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 回答