将变量传递到document.getElementById()-Javascript

将变量传递到document.getElementById()-Javascript,javascript,html,arrays,getelementbyid,Javascript,Html,Arrays,Getelementbyid,我正在运行一个函数,用一周中的几天填充网页上的几个段落标记。该函数采用基于当前日期填充的天数数组,即如果今天是星期四,则按顺序获取接下来的7天 我的问题是,由于某种原因,我无法填充这些标记。我已检查以确保数组已填充且列表正在迭代。虽然这两个都是真的,但是标记的内部HTML都没有改变 HTML: 您的代码有一些问题: i的第一个值是0。由于没有元素forecastDay0,getElementById将返回null。尝试访问null的innerHTML将抛出一个错误,从而中断for循环及其后的所有

我正在运行一个函数,用一周中的几天填充网页上的几个段落标记。该函数采用基于当前日期填充的天数数组,即如果今天是星期四,则按顺序获取接下来的7天

我的问题是,由于某种原因,我无法填充这些标记。我已检查以确保数组已填充且列表正在迭代。虽然这两个都是真的,但是标记的内部HTML都没有改变

HTML:


您的代码有一些问题:

i的第一个值是0。由于没有元素forecastDay0,getElementById将返回null。尝试访问null的innerHTML将抛出一个错误,从而中断for循环及其后的所有内容。当某些东西不起作用时,您应该检查控制台,这是一种很好的调试方法。 for循环的检查应为i
function populatePage(arry) {
    var i;
    for (i = 0; i < arry.length; i++) {
        var id = "forecastDay" + (i + 1);                         // i + 1 instead of just i. The casting to strings is done automatically
        document.getElementById(id).textContent = arry[i];        // use textContent as there isn't really any HTML
    }
}
您不需要在JavaScript中使用字符串

此外,数组从0开始,而元素从1开始。你必须补偿这种差异

函数populatePagearry{ var i; 对于i=0;iDay


Day

脚本何时运行?当DOM运行时,您确定这些元素是它的一部分吗?您是否尝试过console.log查看document.getElementById返回的是什么?填充数组后可能会运行此函数的重复项。数组在页面加载时填充。我刚刚尝试了console.log,但getElementById上出现了一个类型错误;感谢您的洞察力,但是我仍然得到以下信息:TypeError:document.getElementById。。。是null@Dr_Berry721你确定预报日有足够的元素吗?i、 e是否有足够的元素来匹配arry.length?您有多少个?似乎仍然得到一个类型错误:document.getElementById。。。由于某些原因,该代码适用于您提供的部件。尝试在getElementById之前添加console.logid,并检查是否存在具有相应ID的元素。在执行console.log之后,我注意到HTML标记被更改为ID=MainContentPlaceHolder\u forecastDay1,这是由于我正在ASP.NET中使用Site.Master页,我的解决方案现在可以工作了。谢谢
function populatePage(arry) {
    var i;

    for (i = 0; i < arry.length - 1; i++) {
        var id = "forecastDay" + i.toString();
        document.getElementById(id).innerHTML = arry[i].toString();
    }
}
document.getElementById("forecastDay" + i.toString()).innerHTML = arry[i].toString();
function populatePage(arry) {
    var i;
    for (i = 0; i < arry.length; i++) {
        var id = "forecastDay" + (i + 1);                         // i + 1 instead of just i. The casting to strings is done automatically
        document.getElementById(id).textContent = arry[i];        // use textContent as there isn't really any HTML
    }
}