Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组输入字段的Javascript函数引用_Javascript_Html - Fatal编程技术网

数组输入字段的Javascript函数引用

数组输入字段的Javascript函数引用,javascript,html,Javascript,Html,我有一个id为的表单中的表,它作为数组项重复。下面是表中的一行: 改变 更新\u切换 到 更新\u toggledataId。 然后可以将输入元素传递给函数: onKeyUp="updates_toggle(this);" 在函数中,您可以识别tr类型的最近父元素,并在此标记中找到隐藏字段。使用jQuery时,会出现如下情况: $(this).closest('tr').find('input[type=hidden]').val(1); 使用纯JavaScript时,函数如下所示: fun

我有一个id为的表单中的表,它作为数组项重复。下面是表中的一行:

改变 更新\u切换 到 更新\u toggledataId。 然后可以将输入元素传递给函数:

onKeyUp="updates_toggle(this);"
在函数中,您可以识别tr类型的最近父元素,并在此标记中找到隐藏字段。使用jQuery时,会出现如下情况:

$(this).closest('tr').find('input[type=hidden]').val(1);
使用纯JavaScript时,函数如下所示:

function updates_toggle(field) {
var p = field.parentNode;
    while(p.tagName != 'TR') {
        p = p.parentNode;
    }
    var oldVal = p.children[1].children[1].value;
    p.children[1].children[1].value = oldVal + 1;
}

我在这里解决了您的示例,我稍微清理了代码:

将其放入您的更新切换中

document.getElementById("updates[]").value = 1
免责声明:两个版本都需要简单的表结构

如果输入字段的数量发生变化,则必须相应地更新函数

具有任意数量输入的结构的版本

附言:只是我脑海中的一些想法,你的要求远远超出了一个简单的问题。这个问题太模糊了,我考虑不写任何东西

一方面,其他开发人员可以插话说,这并不是在所有情况下都有效,当然,这不是一个真正的ppl使用jQuery的原因,另一方面,你可以记住一些类似的东西,是的,等等。。我还需要另一个结构,可以帮我做这个


不要滥用SO以获得廉价的工作能力,想想你的问题——你已经在第一轮答案中找到了所有的部分,并在你的问题上投入一些精力。

你越注意让你的问题具有信息性和可读性,你就会越感兴趣,我已经把这个问题整理了一点,但下次请记住。我试图回去编辑,但你已经跳进去了。谢谢。这是无效的HTML。您有一个挂在TR元素内部的输入元素。此外,PHP和表格与您的问题无关。为什么要包含它们?请展示您在函数中的尝试。否则,您要求我们为您完成所有工作。jQuery既不是作为标记列出的,也不是问题中提到的选项。那么为什么不更改jQuery$this.closest'tr'。查找'input[type=hidden]'。val1;就为了这个。下一个?是的,我试着用“这个”,但没法用。请注意,我没有使用jquery。您有非jquery解决方案吗?+1用于改进。它又回到了0,因为我从未投过反对票。是其他人。这可能会起作用,但取决于职位。我需要一个将更新[]指定为目标的解决方案。有多个更新[]输入字段。我想更新已编辑行中的版本。请参阅上面的更新代码。我可以看到这可能适用于此特定实例,但我需要一种方法来显式引用updates[]字段,以避免您提到的问题。我希望该功能可以与我的网站上的任何表格,我在那里对数据进行更新。
<tr>
    <td>[inputs]</td>
    <td>[inputs]</td>
    <td>[inputs]</td>
    [...]
</tr>
<script type="text/javascript">
    function updates_toggle(self) {
        var element = self.parentNode.parentNode.getElementsByTagName("input")[2];
        element.value = 1;
    }
</script>
updates_toggle(this)
<script type="text/javascript">
    function updates_toggle(self) {
        var elements = self.parentNode.parentNode;
        var element = searchingChilds(elements.childNodes);
        if (element) {
            element.value = 1;
        }
    }

    function searchingChilds(tr) {
        for (var element in tr) {
            var subelement = tr[element];
            if (subelement.nodeName === "TD") {
                for (var subtd in subelement.childNodes) {
                    var subsubelement = subelement.childNodes[subtd];
                    if(subsubelement.nodeName === "INPUT" && subsubelement.attributes.id.value === "updates[]") { 
                        return subsubelement;
                    }
                }
            }
        }

        return null;    
    }
</script>