输入元素值未定义

时间:2017-11-30 02:54:38

标签: javascript

我的JavaScript函数无法正常工作。该函数应遍历input框并显示包含input值的提醒。出于某种原因,input都返回undefined。我确信input元素的id是正确的。我可以对输入执行其他操作(更改颜色,设置.innerHTML),但我似乎无法收集值。有人可以指出我可能做错了吗?

function submitHours(){
    var table = document.getElementById('StudentList');
    var tbody = table.getElementsByTagName('tbody')[0];
    var rows = tbody.getElementsByTagName("tr");
    for (var r = 1; r < rows.length+1; r++) {
        for(x=1; x<=25; x++){
            document.getElementById(r+'day'+x).style.backgroundColor = 'red';
            alert(document.getElementById(r+'day'+x).value);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您需要使用innerText代替value

for(x=1; x<=25; x++){
  document.getElementById(r+'day'+x).style.backgroundColor = 'red';
  alert(document.getElementById(r+'day'+x).innerText);
}

答案 1 :(得分:1)

您似乎正在选择包含您要定位的input元素,而不是input本身。这就是为什么您可以设置.innerHTML,但不能设置.value

要获取该值,请执行以下操作:

function submitHours(){
    var rows = document.querySelector('#StudentList > tbody:first-child > tr');

    for (var r = 1; r < rows.length+1; r++) {
        for(var x=1; x<=25; x++){
            var input = document.querySelector('#' + r+'day'+x + " input");
            input.style.backgroundColor = 'red';
            alert(input.value);
        }
    }
}

这可能是一种更有效的方法,但是如果没有看到你的标记,我就无法分辨。