Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
getElementsByName()javascript_Javascript - Fatal编程技术网

getElementsByName()javascript

getElementsByName()javascript,javascript,Javascript,请原谅我的极端天真……我试图使用getElementByName方法执行javascript,但本质上,当我到达该站点时,我希望在数量字段中输入0(到达该站点15秒后) 这是我检查quantity字段时得到的结果- 你能行 var quantities = document.getElementsByName("quantity"); for(var i=0; i < quantities.length; i++) quantities[i].value = 0; } var

请原谅我的极端天真……我试图使用getElementByName方法执行javascript,但本质上,当我到达该站点时,我希望在数量字段中输入0(到达该站点15秒后)

这是我检查quantity字段时得到的结果-

你能行

var quantities = document.getElementsByName("quantity");
for(var i=0; i < quantities.length; i++) 
    quantities[i].value = 0;
}
var数量=document.getElementsByName(“数量”);
对于(变量i=0;i
对于这样的事情,最好使用ID而不是名称

document.getElementsByName()
一种旧方法,在涉及
for
循环的边缘情况下产生意外结果。而是使用*这是DOM方法的瑞士ArmyTM刀。将左侧的以下方法替换为右侧的方法:

  <article class='x' name='x'></article>
  // ... Any amount of DOM elements that meet specific traits

  document.getElementsByClassName('x') /* ------> */ document.querySelectorAll('.x')
  document.getElementsByName('x') /* -----------> */ document.querySelectorAll('[name=x]')
  document.getElementsByTagName('article') /* --> */ document.querySelectorAll('article')

演示 详细信息将在演示中进行注释

/~[1]~~
/*引用DOM元素*///
//1a。
/*例1*/
//引用表格中的所有字段#示例1
const exp1=document.forms.example1.elements;
/*
将表单#示例1中的所有输入[名称=数量]收集到HTML集合中
*/
常数qty1=exp1.1数量;
//1b。
/*例2*/
//参考表格#示例2
const exp2=document.getElementById('example2');
/*
将表单#示例2中的所有输入收集到节点列表中
*/
常量qty2=exp2.querySelectorAll('input');
//~~[2]~~
/*定义函数*///
//2.
/*
@Params集合——类似数组的字段对象(例如qty1或qty2)
dataString--分配给每个字段的字符串-默认为“0”
如果未指定
*/
函数changeValue(集合,dataString=“0”){
collection.forEach(field=>field.value=dataString);
}
//~~[3]~~
/*调用setTimeout()*///
//3a。
/*例1*/
setTimeout(函数(){
变更值(qty1,'0');
}, 15000);
//3b。
/*例2*/
setTimeout(函数(){
变化值(qty2);
}, 15000);



您需要一个
s
getElementsByName
,而且,您的
setInterval
函数每次运行(每15秒一次)getElements not getElementI添加了s并且仍然没有执行时,都会创建一个新的内部函数。我不知道这是使用getElementsByName而不是GetElementsBydHanks的结果,先生-我实际上计划使用ID,但当我检查元素时,我没有看到ID@Code_Guess顺便说一句,这只是一个建议。更多细节请参见答案。非常感谢,这真的帮助了我。。。。。。是否可以使用document.querySelector执行for循环?所以,在同一个页面上,我希望相同的javascript在输入数字0后点击“更新数量”按钮。。。页面上有多个具有相同输入的“更新数量”按钮type@Code_Guess对不起,我想我不完全明白。你能举一个你正在努力实现的小例子吗?我可以试着帮助你更多吗?顺便说一句,你也可以投票并标记正确答案;)我有一个网页,上面有各种项目的列表。我定期进入该位置,通过在数量字段中输入0将其清空,然后单击“更新数量”按钮,此过程是/必须逐项完成。有多个数量字段和“更新数量”按钮具有相同的元素属性
  <article class='x' name='x'></article>
  // ... Any amount of DOM elements that meet specific traits

  document.getElementsByClassName('x') /* ------> */ document.querySelectorAll('.x')
  document.getElementsByName('x') /* -----------> */ document.querySelectorAll('[name=x]')
  document.getElementsByTagName('article') /* --> */ document.querySelectorAll('article')
<form id='x'>
  <input name='z'>
  // ... Any amount of fields with the name of 'z' (ie ['name=z'])
</form>

// Reference form#x
const fx = document.forms.x
// Reference all form controls within form#x
const fc = fx.elements
// Reference all form controls with ['name=z'] within form#x
const fz = fc.z

/* OR */
/* The above statements in one line */
const fXCZ = document.forms.x.elements.z