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;