Javascript';s getElementById在我的循环中不起作用

Javascript';s getElementById在我的循环中不起作用,javascript,forms,loops,for-loop,getelementbyid,Javascript,Forms,Loops,For Loop,Getelementbyid,我一直在处理的一个函数有问题。此函数的目的是获取两组文本输入框内的日期,计算两者之间的差值,然后将天数放入第三组框中。我的功能如下所示 function daysBetween() { for (var i = 0; i < 8; i++) { //Get the value of the current form elements var start = namestart[i]; var end = namend[i]; var out = names

我一直在处理的一个函数有问题。此函数的目的是获取两组文本输入框内的日期,计算两者之间的差值,然后将天数放入第三组框中。我的功能如下所示

function daysBetween() {

for (var i = 0; i < 8; i++) {   

//Get the value of the current form elements
    var start = namestart[i];
    var end = namend[i];
    var out = names[i];

//Duration of a day
    var d = 1000*60*60*24;

// Split Date one
    var x = start.split("-");
// Split Date two
    var y = end.split("-");

/// // Set Date one object
    var d1 = new Date(x[0],(x[1]-1),x[2]);
//  // Set Date two object
    var d2 = new Date(y[0],(y[1]-1),y[2]);
//  
//  //Calculate difference
    diff = Math.ceil((d2.getTime()-d1.getTime())/(d));

    //Show difference
    document.getElementById(out).value = diff;

    }
}
我引用该文件并在标题中调用我的函数,如下所示:

<script type="text/javascript" src="calcdate.js"></script>
<script type="text/javascript">
window.onload = daysBetween;
</script>

window.onload=daysBetween;

首先,当对象没有ID时,不能通过其ID引用对象


首先,当对象没有ID时,不能通过其ID引用对象


既然您说
out
包含您可能想要更改的名称

document.getElementById(out).value = diff;

或者,您实际上可以将
id
属性添加到html中,并将其设置为与
name
属性相同的值,这样就可以避免更改javascript


getElementById
通过其id属性获取元素,
getElementsByName
获取具有指定name属性的所有元素,并将其作为数组返回。在HTML中,id应该是唯一的,这就是为什么getElementById只返回1个元素的原因,因为您说,
out
包含您可能要更改的名称

document.getElementById(out).value = diff;

或者,您实际上可以将
id
属性添加到html中,并将其设置为与
name
属性相同的值,这样就可以避免更改javascript


getElementById
通过其id属性获取元素,
getElementsByName
获取具有指定name属性的所有元素,并将其作为数组返回。在HTML中,id应该是唯一的,这就是getElementById仅返回1个元素的原因

确保在浏览器加载所有相关元素后调用脚本。此外,您没有在任何地方定义
名称。尝试添加一些
控制台。记录
调用以找出函数不同部分的变量值。其中
namestart[i]
nameend[i]
names[i]
已定义?确保在浏览器加载所有相关元素后调用脚本。此外,您没有在任何地方定义
名称。尝试添加一些
console.log
调用以查找函数不同部分上的变量值。其中
namestart[i]
nameend[i]
names[i]
已定义?它们确实具有相同的ID,这只是一个示例。我将修复我的op。我实际上只是想把它们和id放在一起,但我匆忙地将它们从我的页面中复制了出来:/它们确实有相同的id,这只是一个例子。我会修改我的操作。我本来打算只把它们和id放在一起,但我匆忙地把它们从我的页面中复制了出来。这样做成功了。有人能给我解释一下这两个函数在DOM中的区别吗,或者把我链接到这个页面。我很想知道为什么会这样,但elementById没有(我的ID与表单上的名称匹配)。这很有效。有人能给我解释一下这两个函数在DOM中的区别吗,或者把我链接到这个页面。我想知道为什么这样做,但elementById不行(我的ID与表单上的名称匹配)。
document.getElementById(out).value = diff;
document.getElementsByName(out)[0].value = diff;