我有一段代码,如下所示,
$(document).ready(function(){
var agr1='#19865 - testArg';
var arg2=1856
$('#dv_Test').append('<button onclick="testFunction('+ agr1 +','+ arg2 +')">Test</button>')
});
function testFunction(arg1, arg2) {
alert(arg1);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dv_Test"></div>
在这里我收到如下错误
testFunction(#19865 - testArg,1856)
我的字符串
agr1
本身没有 ""
我该如何解决这个问题?
最佳答案
问题是因为 arg1
值是一个字符串,需要用引号括起来:
$(document).ready(function() {
var agr1 = '#19865 - testArg';
var arg2 = 1856
$('#dv_Test').append('<button onclick="testFunction(\'' + agr1 + '\',' + arg2 + ')">Test</button>')
});
function testFunction(arg1, arg2) {
alert(arg1);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dv_Test"></div>
然而,更好的方法是将这些值放在
data
属性中,并添加一个单独的委托(delegate)事件处理程序来处理所有动态创建的按钮。试试这个:$(document).ready(function() {
var agr1 = '#19865 - testArg';
var arg2 = 1856
var $div = $('#dv_Test').append('<button data-arg1="' + agr1 + '" data-arg2="' + arg2 + '">Test</button>');
$div.on('click', 'button', function() {
var $btn = $(this);
console.log($btn.data('arg1'), $btn.data('arg2'));
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dv_Test"></div>
关于javascript - 在从 Javascript 附加的 onclick 函数中传递参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54005968/