#问题:那么在js中如何实现这个要求?
当一个html的DOM对象的某个值发送变化时候(比如name属性),让另一个DOM对象的属性也跟着变化,如比第二个DOM中的内容要让第一个DOM对象的name属性前面加上“姓名:” + name,初学,不理解这种应该怎么办?
你这其实算是框架的渲染原理。如果你考虑使用react或者vue 你就不必考虑这种问题。
如果你现在不想入手框架学习,可以在我文章里搜一下mvc原理,应该可以满足你的需求
<script>
const arr = [
{ id: 10, name: '张三' },
{ id: 12, name: '李四' },
{ id: 3, name: '王五' },
{ id: 2, name: '赵六' },
{ id: 4, name: '孙七' }
]
const newArr = []
for (let i = 0; i < arr.length; i++) {
newArr.push(arr[i].name)
}
console.log(newArr)
</script>
我会尽力回答这个问题。在JavaScript中,可以实现DOM对象之间的属性传递引用,可以通过监听第一个DOM对象的相关属性值,当属性值改变时,触发一个回调函数,在回调函数中更新第二个DOM对象的相关属性值。
具体实现步骤如下:
通过getElementById方法或者其他方法获取第一个DOM对象和第二个DOM对象。
添加事件监听器到第一个DOM对象的相关属性,如name属性,监听事件为input。
document.getElementById('first').addEventListener('input', function(event) {
var name = event.target.value;
var newName = '姓名: ' + name;
document.getElementById('second').textContent = newName;
});
完整代码如下:
<!-- HTML代码 -->
<label for="first">姓名:</label>
<input type="text" id="first" name="name">
<div id="second"></div>
// JS代码
document.getElementById('first').addEventListener('input', function(event) {
var name = event.target.value;
var newName = '姓名: ' + name;
document.getElementById('second').textContent = newName;
});
这样就可以实现DOM对象之间的属性传递引用了。当第一个DOM对象的name属性值改变时,第二个DOM对象会将其前面加上“姓名:”。