javascript - 将变量传递到 document.getElementById() - Javascript
问题描述
我正在运行一个函数,该函数用一周中的几天填充网页上的几个段落标签。该函数采用基于当天填充的天数组(即,如果今天是星期四,则按顺序获取接下来的 7 天)。
我的问题是由于某种原因,我无法填充这些标签。我已经检查以确保数组正在被填充并且列表正在被迭代。虽然这两个都是真的,但标签的内部 HTML 都没有被更改。
HTML:
<p class="mb-1" id="forecastDay1" runat="server">Day</p>
<p class="mb-1" id="forecastDay2" runat="server">Day</p>
JavaScript 函数:
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();
解决方案
您的代码有一些问题:
i
的第一个值为0
。既然没有元素#forecastDay0
,getElementById
就会返回null
。尝试访问innerHTML
ofnull
将引发错误,从而破坏for
循环及其之后的所有内容。当某些东西不起作用时,您应该检查您的控制台,这是调试的好方法。- 循环检查不
for
应该是.i < arry.length
i < arry.length - 1
- 你不需要任何
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
}
}
推荐阅读
- git - Mac - git svn 错误 - 无法为模块 SVN::_Core: dlo 加载“/usr/X/X/subversion/lib/perl5/XXX/XXX/XXX/XXX/SVN/XXX/_Core.bundle”
- javascript - AG Grid React > ReactUI > 加载错误?
- python - API 返回
但我没有看到结果 - android-studio - 是否可以根据身份验证方式(PIN 或指纹)在提示上设置 2 个不同的标题?
- flutter - 颤动冻结:由于类型原因,无法为“数据”生成“toJson”代码
- redisson - redisson使用的连接数是subscriptionConnectionPoolSize和connectionPoolSize之和吗?
- javascript - 拒绝加载脚本“https://www.gstatic.com/firebasejs/9.4.1/firebase-app.js”,因为它违反了以下内容安全政策
- ios - 如何使轻按手势在视图外稍微拦截轻按
- php - Codeception:使用 ->expectError() 和 trigger_error() 的问题
- caching - 我应该在 Redis 中设置“常量”结果缓存的过期时间吗?