gpt4 book ai didi

javascript - IE 10 : cannot get elements with name composed with only digit

转载 作者:行者123 更新时间:2023-11-28 12:24:35 26 4
gpt4 key购买 nike

我在 IE 10 中遇到此问题。我在 HTML 页面的表单内有以下代码:

<input type='hidden' name='X123' />
<input type='hidden' name='123' />
<input type='hidden' name='00123' />

如果我运行这个 JS 命令:

document.forms['MyForm'].elements[name];

其中name是输入的名称,我只能得到第一个('X123')。在另外两种情况下,函数返回undefined。我在 IE 10 和 Firefox 上进行了测试。在 Firefox 上有效。不过,它必须在 IE 下运行。这是一个 MWE:

<html><head><script type='text/javascript'>
function println(text) {
document.getElementById('output').innerHTML += '<p>' + text + '</p>';
}
function test() {
println('X123 = ' + document.forms['MyForm'].elements['X123']);
println('123 = ' + document.forms['MyForm'].elements['123']);
println('00123 = ' + document.forms['MyForm'].elements['00123']);
}
</script></head><body onload='test();'><form name='MyForm'>
<input type='hidden' name='X123' />
<input type='hidden' name='123' />
<input type='hidden' name='00123' />
</form><div id='output'></div></body></html>

我需要知道这是否是 IE 的已知行为。

更好的解释:我在工作中遇到了这个问题。我制作了您看到的 HTML 只是为了复制问题(这不是教程)。我知道我可以使用 jQuery 或其他方法按名称获取元素,但我需要知道这是否是 IE 的已知行为,因为我在网上找不到任何相关信息。

最佳答案

I need to know if this is a known behavior of IE.

不仅仅是 IE; that code对于 123 元素,它也不适用于 Chrome 或 Firefox。 Grundy好像找到了the relevant info为什么,全数字名称会导致与基于索引的访问混淆,因此无法通过名称使用。

...and if exists a workaround.

是的,您可以使用querySelector(适用于所有现代浏览器,以及 IE8)。我手头没有 IE10,但它可以在 IE8、IE9、IE11、Chrome 和 Firefox 上运行(原始代码在其中任何一个都不起作用),所以我想说它几乎肯定也可以在 IE10 上运行:

println('X123 = '  + document.forms['MyForm'].querySelector('[name="X123"]'));
println('123 = ' + document.forms['MyForm'].querySelector('[name="123"]'));
println('00123 = ' + document.forms['MyForm'].querySelector('[name="00123"]'));

请注意,[name="value"] 中值周围的引号很重要,因为否则以数字开头的值会出现 CSS 语法错误。

实例:

function println(text) {
document.getElementById('output').innerHTML += '<p>' + text + '</p>';
}
function test() {
println('X123 = ' + document.forms['MyForm'].querySelector('[name="X123"]'));
println('123 = ' + document.forms['MyForm'].querySelector('[name="123"]'));
println('00123 = ' + document.forms['MyForm'].querySelector('[name="00123"]'));
}
test();
<form name='MyForm'>
<input type='hidden' name='X123' value="X123 value"/>
<input type='hidden' name='123' value="123 value"/>
<input type='hidden' name='00123' value="00123 value" />
</form><div id='output'></div>

如果你想要他们的值(value)观:

println('X123 = '  + document.forms['MyForm'].querySelector('[name="X123"]']).value);
println('123 = ' + document.forms['MyForm'].querySelector('[name="123"]']).value);
println('00123 = ' + document.forms['MyForm'].querySelector('[name="00123"]']).value);

function println(text) {
document.getElementById('output').innerHTML += '<p>' + text + '</p>';
}
function test() {
println('X123 = ' + document.forms['MyForm'].querySelector('[name="X123"]').value);
println('123 = ' + document.forms['MyForm'].querySelector('[name="123"]').value);
println('00123 = ' + document.forms['MyForm'].querySelector('[name="00123"]').value);
}
test();
<form name='MyForm'>
<input type='hidden' name='X123' value="X123 value"/>
<input type='hidden' name='123' value="123 value"/>
<input type='hidden' name='00123' value="00123 value" />
</form><div id='output'></div>

关于javascript - IE 10 : cannot get elements with name composed with only digit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com