【问题标题】:How to update the value of a specific input field instead of the td first child?如何更新特定输入字段的值而不是 td 第一个孩子?
【发布时间】:2019-02-09 04:02:06
【问题描述】:

我已将此代码添加到我在 javascript 中的函数中,并且在用户单击按钮以向上或向下推动行后,我成功地使用行的新值更新了表第一个 TD,问题是我正在使用输入此 td 中的字段和输入被删除,该值现在只是一个简单的文本/数字字符。

如何更改此 sn-p 以更新第一个 td 内的输入字段,而不是用输入字段外的新值替换 td 内容。

Array.prototype.forEach.call(document.querySelectorAll('td:first-child'),
  function (elem, idx) { elem.innerHTML = idx + 1; }
)

好的,在 Archers 的帮助下,我更新了下面的代码,现在有了我想要的功能。感谢所有参与教育这个新手的人;)

        Array.prototype.forEach.call(document.querySelectorAll('td:first-child input[name^=sort]'), function (elem, idx) {
        elem.value = idx + 1;

通过改变

 'td:first-child'

 'td:first-child input[name^=sort]'

我能够引用特定的输入字段,而不是第一个 td 列中的所有输入字段,并且不再用纯文本替换输入字段。

【问题讨论】:

    标签: javascript html arrays forms html-table


    【解决方案1】:

    或者您可以使用您的代码并像这样更改其主体:

    Array.prototype.forEach.call(document.querySelectorAll('td:first-child'), function(elem, idx){
         (elem.querySelector("input")||{}).value=idx+1; //use this line instead of your forEach body
    });
    

    Try it online!

    【讨论】:

    • 实际上,当我尝试添加此页面时,页面的功能不起作用,我没有投反对票,但我的表单正在关闭按钮,并且当我添加代码时选择器也不起作用。谢谢你的尝试。不胜感激。
    • 你检查我的在线小提琴吗?无论如何,解决您的问题很重要。
    【解决方案2】:

    您可以更改选择器以定位输入而不是它所在的单元格...

    Array.prototype.forEach.call(document.querySelectorAll('td:first-child input'),
        function (elem, idx) {
            elem.value = idx + 1;
        });
    

    【讨论】:

    • 嘿 Archer,感谢您的洞察力,我尝试了代码,但是由于我在第一个 td 中有多个输入,因此我得到了连续的数字,因此我的第二行变为 6(5 个输入第一行中的fieldsd,然后第二行从6开始)有没有办法添加输入名称(sort [])或ID(#sort),所以它可能只检查这些输入?
    • 当然,在这种情况下添加名称是最好的办法(ID 应该是唯一的 - 如果重复,它们将变得毫无意义)。您可以更新问题以显示第一个单元格的完整 html 吗?
    • 想通了并用最终代码更新了问题。
    • 太棒了 - 很高兴你让它工作了。当您发布 html 后,我会更新此答案,以便它更完整。
    • 好的 - 无需更新,因为我看到您已添加额外信息来解决问题中的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 2015-04-30
    • 2021-07-21
    • 2022-12-15
    • 2021-12-27
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多