【发布时间】:2021-03-05 23:04:29
【问题描述】:
当给定数组包含员工列表时
let names = [
{ firstName: 'John', lastName: 'Doe', DOB: '01Jan1970', role: 'cook' },
{ firstName: 'Mary', lastName: 'Jane', DOB: '11Sep2000', role: 'server' },
];
并且已经提供了#ul,
<ul id="container">
<li>
<a class="name">John Doe</a>
<div class="age">41</div>
</li>
<li>
<a class="name">Mary Jane</a>
<div class="age">20</div>
</li>
</ul>
我需要使它在单击名称时返回员工的角色,这是我的代码:
function printRole(user) {
console.log(user.role);
}
function getRoles(array) {
for (let i = 0; i < array.length; i++) {
const li = document.createElement('li'),
a = document.createElement('a'),
div = document.createElement('div')
//user = array[i]
let selectedUser;
let user = array[0]
if (user.firstName === firstEl) {
selectedUser = user;
printRole(selectedUser)
a.innerText = user.firstName + ' ' + user.lastName
a.addEventListener("click", printRole(user))
}
}
}
我首先在 HTML 元素中使用了createElement,然后在某个时候添加了addEventListner。我知道我必须在某些时候将li 应用于#ul 容器,但我对自己做错了什么(也许是所有事情)感到非常困惑。
我相信我正朝着正确的方向前进,但我似乎不知道如何以一种像样的(正确的)方式来表达它。
【问题讨论】:
-
你可以尝试像这样添加事件监听器。
a.addEventListener("click", () => printRole(user))因为addEventListener需要回调函数。
标签: javascript html arrays dom