javascript - 我将如何访问特定值
问题描述
假设我只想访问已添加到在另一个函数中的 for 循环中创建的 li 元素的 c.symbol 值。我该怎么做呢?
for(let c of data){
let node = document.createElement('li');
node.textContent = c.companyName + ', ' + c.symbol; //only want c.symbol
companyList.appendChild(node);
node.addEventListener('click', function(e){
if(e.target && e.target.nodeName.toLowerCase() == "li"){
populateCompanyInfo(e);
}
});
}
function populateCompanyInfo(e){
//I want to be able to access the c.symbol value in here using the taget
}
解决方案
我建议您使用dataset
属性来存储要附加到元素的数据。
let data = [{
symbol: "EleFromStack",
companyName: "Stack"
}];
let companyList = document.getElementById("companyList");
for (let c of data) {
let node = document.createElement('li');
node.textContent = c.companyName + ', ' + c.symbol; //only want c.symbol
node.dataset.symbol = c.symbol; // Here I'm storing the c.symbol value
companyList.appendChild(node);
node.addEventListener('click', function(e) {
if (e.target && e.target.nodeName.toLowerCase() == "li") {
populateCompanyInfo(e);
}
});
}
function populateCompanyInfo(e) {
console.log(e.target.dataset.symbol)
}
<ul id="companyList">
</ul>
推荐阅读
- android - 在 Flutter 中如何实现 Fragment 之间的导航?
- wolfram-mathematica - 打印中间结果 Sum 函数
- mysql - 如何在同一个 sql 语句中进行 2 个查询?
- c++ - c++ 使用已删除函数并隐式删除,因为默认定义格式不正确
- webrtc - WebRTC facesMode 环境在 Android Chrome 中不起作用
- c - 仅在我的 bash shell 中执行结束时写入文件
- html - CSS:如何在具有多个 div 的父 div 中定义子 div 的位置
- c# - 音频源即使被碰撞盒“触发”也不想工作
- python - 使用 RSA 或 AES 加密运行加密的 python 代码
- c# - JSON.NET 未将 TypeConverter 用于 Dictionary 键