如何不使用document.getElementById()在HTML中直接显示JS数组元素
能否不使用
document.getElementById()直接在HTML中展示JavaScript数组元素? 我用JavaScript写了一个生成数组的函数,数组生成后想在HTML里展示部分元素,但不想用document.getElementById()方法,请问能不能直接在HTML里选取数组元素展示?
原有实现代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Distance calculator</title> <script> let myArray = [5, 7, 9] var soluzioni =[] function calcolo(){ for(let i=0; i<myArray.length; i++){ var y = myArray[i]; var risultato = y*y; soluzioni.push(risultato); document.getElementById('Calcolo').innerHTML =+ soluzioni[0] + "<br>"; } } </script> </head> <body> <div id="posizione"> <button onclick="calcolo();"> calcola</button> </div> <br> <div id="Calcolo"> </div> </body> </html>
期望实现的形式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Distance calculator</title> <script> let myArray = [5, 7, 9] var soluzioni =[] function calcolo(){ for(let i=0; i<myArray.length; i++){ var y = myArray[i]; var risultato = y*y; soluzioni.push(risultato); } } </script> </head> <body> <div id="posizione"> <button onclick="calcolo();"> calcola</button> </div> <br> <div id="Calcolo"> <p> soluzioni[0] </p> </div> </body> </html>
直接在HTML里写soluzioni[0]是行不通的,因为HTML是静态标记语言,本身无法识别和解析JavaScript变量。不过你可以用以下几种替代方案,不用依赖document.getElementById():
1. 直接引用元素ID变量(全局作用域下)
浏览器会自动把带有id的DOM元素挂载到window对象上,你可以直接用元素的id作为变量名来操作DOM:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Distance calculator</title> <script> let myArray = [5, 7, 9] var soluzioni =[] function calcolo(){ for(let i=0; i<myArray.length; i++){ var y = myArray[i]; var risultato = y*y; soluzioni.push(risultato); } // 直接用元素id"Calcolo"作为变量 Calcolo.innerHTML = soluzioni[0]; } </script> </head> <body> <div id="posizione"> <button onclick="calcolo();"> calcola</button> </div> <br> <div id="Calcolo"> </div> </body> </html>
2. 使用document.querySelector()选择元素
用querySelector()替代getElementById(),语法更灵活,也能实现相同的效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Distance calculator</title> <script> let myArray = [5, 7, 9] var soluzioni =[] function calcolo(){ for(let i=0; i<myArray.length; i++){ var y = myArray[i]; var risultato = y*y; soluzioni.push(risultato); } // 通过选择器获取元素并修改内容 document.querySelector('#Calcolo').innerHTML = `<p>${soluzioni[0]}</p>`; } </script> </head> <body> <div id="posizione"> <button onclick="calcolo();"> calcola</button> </div> <br> <div id="Calcolo"> </div> </body> </html>
3. 使用前端框架实现数据绑定
如果不想手动操作DOM,可借助Vue、React这类前端框架,它们支持数据与视图的双向绑定,直接在HTML中通过插值语法展示数组元素:
(以Vue为例)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Distance calculator</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> <div id="posizione"> <button @click="calcolo"> calcola</button> </div> <br> <div id="Calcolo"> <p>{{ soluzioni[0] }}</p> </div> </div> <script> new Vue({ el: '#app', data: { myArray: [5, 7, 9], soluzioni: [] }, methods: { calcolo() { this.soluzioni = this.myArray.map(num => num * num); } } }) </script> </body> </html>
内容的提问来源于stack exchange,提问作者user13918655
相关产品推荐
相关产品推荐

