javascript - 将对象传递给函数
问题描述
我有一组<span>
在 JavaScript 函数中动态创建的元素。创建的每一个<span>
我都希望是可点击的,并调用一个函数,该函数在点击时将参数作为对象。
我的问题是当我传递对象时,我得到了错误undefined
。 objAddQuestion
如何将对象传递给函数?
for (var j = 0; j < lstQuestions.length; j++) {
var objAddQuestion = new Object();
objAddQuestion = lstQuestions[j];
html += ' <span onclick="addQuestion(objAddQuestion)" class="badge addQ">' +
' Add</span>';
}
和功能:
function addQuestion(obj) {
//I got error when click
}
lstQuestions
是一个对象列表。
解决方案
要实现这一点,您可以将对象存储在您创建的data
每个对象的 jQuery 缓存中。span
然后,您可以使用不显眼的委托事件处理程序在单击元素时再次读取它们。尝试这个:
var lstQuestions = [
{ label: 'foo' },
{ label: 'bar' },
{ label: 'fizz' },
{ label: 'buzz' }
];
var spans = lstQuestions.map(function(o) {
return $('<span />', {
'class': 'badge',
'text': o.label
}).data('question', o);
})
$('#questions').on('click', '.badge', function() {
var obj = $(this).data('question');
console.log(obj);
}).append(spans);
span {
padding: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="questions"></div>
另一种选择是将数组的相关对象的索引存储在 data 属性中,然后在单击元素时使用它从数组中检索项目。两者都有优势,这取决于您的用例,哪个更合适。
推荐阅读
- python - 关于返回组合N取K的问题
- typescript - 为具有破折号作为属性名称的对象定义打字稿接口
- ios - 如何拥有符合具有关联值的协议的泛型类型的实例或返回类型
- python - Pandas sort_values 方法不对 Pandas DataFrame 进行排序
- php - SEO Ultimate 与 Wordpress 5.5.3
- javascript - Discord.js 知道机器人的所有公会中有多少用户
- cmake - 在 CMake 中设置互斥变量?
- r - 如何在存储在数据框中的多个列表中找到最大值?
- docker - https://localhost:8080/console :Hasura 控制台不适用于 chrome 浏览器
- python - 将 RGB 图像中每个通道的均值和标准差更改为自定义值的最有效方法?