请教

请教

  1. 老师,我不能理解下图html += str1; 这种写法

    知道能够显示出dt标签的内容,但是不明白为什么这样能显示,为什么是这样思考

http://img1.sycdn.imooc.com//climg/607fd4b609b35d9f12720539.jpg


2. 如下图,显示的内容和题目要求不一样,我这里显示了三组数据,该怎么调整才能正确显示呢

    ​http://img1.sycdn.imooc.com//climg/607fd5b009d699ef11690521.jpg


相关代码:

​<!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>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,对于你的问题解答如下:

1、因为遍历数组的时候,需要将里面的内容拼接起来,所以可以使用累加将每次循环得到的结果拼接起来。

2、作为初学者,同学一开始不知道怎么写,想不到怎么写,这都是很正常的现象,老师也都是这么过来的,同学不用担心,一开始可以模仿他人的代码和思路,然后多练习,多思考多总结,慢慢的就会形成自己的思路了,以后再遇到类似的也就是知道该怎么写了。

祝学习愉快~


  • 日拱一卒_ 提问者 #1
    好的,谢谢老师 我就是看着别人写的能理解别人写的什么意思,自己写就想不到用到的方法
    2021-04-21 21:55:18
好帮手慕慕子 2021-04-21 16:13:37

同学你好,对于你的问题解答如下:

1、html += str1  这种写法表示累加str1,这样就可以将每次循环的值累加,得到最终的终拼接结果赋值给html。

2、代码无法实现效果的原因如下:

(1)因为在for循环内部使用let声明html为空字符串,每次循环的时候,html都会被重新声明为空字符串,所以无法保存上一次累加的结果,导致效果是不对的。建议:在循环外声明变量html。

(2)设置dd标签中的内容时,应该使用内层循环的值arrValue,而不是外层循环的value。

(3)html 拼接完str2之后,得到的就是所有的内容了,不需要进行其他操作了。

(4)页面中本来就有内容,直接使用document.write向页面中直接添加内容,不会覆盖原来的内容,所以显示有三组列表。建议:获取列表,通过innerHTML属性,将拼接的内容替换列表原有的内容。

具体可以结合下图修改。

http://img1.sycdn.imooc.com//climg/607fde4f0964919f08680704.jpg

祝学习愉快~

  • 提问者 日拱一卒_ #1
    1. 老师我能明白html += str1; 是累加的意思,不明白的是为什么这样写,这样想。

      如果不参照其他同学写的,不知道该怎么显示 '前端或后端,或者显示classfies的内容'

    2021-04-21 16:22:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师