请教
老师,我不能理解下图html += str1; 这种写法
知道能够显示出dt标签的内容,但是不明白为什么这样能显示,为什么是这样思考
2. 如下图,显示的内容和题目要求不一样,我这里显示了三组数据,该怎么调整才能正确显示呢
相关代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Object.entries()</title>
</head>
<body>
<div id="list">
<!--html结构参考如下:-->
<dl>
<dt>前端</dt>
<dd>Vue</dd>
<dd>Vue</dd>
<dd>Vue</dd>
</dl>
</div>
<script>
var classfies = {
"前端": ["Vue", "Angular", "React"],
"后端": ["Php", "Java", "Python"]
}
/*补充代码*/
let htmlStr = ``;
for (let [key, value] of Object.entries(classfies)) {
let html = ``;
let str1 = `<dt>${key}</dt>`;
html += str1;
console.log(html);
for (let arrValue of value.values()) {
let str2 = `<dd>${value}</dd>`;
html += str2;
}
html = `<dl>${html}</dl>`;
htmlStr += html;
}
document.write(htmlStr);
</script>
</body>
</html>
正在回答
同学你好,对于你的问题解答如下:
1、因为遍历数组的时候,需要将里面的内容拼接起来,所以可以使用累加将每次循环得到的结果拼接起来。
2、作为初学者,同学一开始不知道怎么写,想不到怎么写,这都是很正常的现象,老师也都是这么过来的,同学不用担心,一开始可以模仿他人的代码和思路,然后多练习,多思考多总结,慢慢的就会形成自己的思路了,以后再遇到类似的也就是知道该怎么写了。
祝学习愉快~
同学你好,对于你的问题解答如下:
1、html += str1 这种写法表示累加str1,这样就可以将每次循环的值累加,得到最终的终拼接结果赋值给html。
2、代码无法实现效果的原因如下:
(1)因为在for循环内部使用let声明html为空字符串,每次循环的时候,html都会被重新声明为空字符串,所以无法保存上一次累加的结果,导致效果是不对的。建议:在循环外声明变量html。
(2)设置dd标签中的内容时,应该使用内层循环的值arrValue,而不是外层循环的value。
(3)html 拼接完str2之后,得到的就是所有的内容了,不需要进行其他操作了。
(4)页面中本来就有内容,直接使用document.write向页面中直接添加内容,不会覆盖原来的内容,所以显示有三组列表。建议:获取列表,通过innerHTML属性,将拼接的内容替换列表原有的内容。
具体可以结合下图修改。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星