我正在尝试在动态创建的锚元素的onClick事件处理函数的参数中传递一个字符串,请参阅小提琴http://jsfiddle.net/shmdhussain/bXYe4/。
我无法将字符串传递给函数,但我可以将数字整数传递给函数。请帮帮我。提前谢谢。
HTML:
<DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>test</title>
<link rel="stylesheet" href="mystyle.css" class="cssfx"/>
<script src="/jquery.min.js"></script>
<script src="colon.js"></script>
</head>
<body>
<div class="mytest">
</div>
</body>
</html>
</html>
使用Javascript:
var elem=[ {"name":"husain","url":"http://google.com","age":21},
{"name":"ismail","url":"http://yahoo.com","age":22},
{"name":"nambi","url":"http://msn.com","age":23}
]
jQuery(function($){
var str="";
for(i=0;i<elem.length;i++){
str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"
console.log(str);
}
$('.mytest').html(str);
});
function test(url){
console.log("url is "+url);
}
答案 0 :(得分:19)
你必须使用正确的字符串sytax。此
"<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"
将导致
<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br>
你不能使用'for onclick和测试参数。使用\“而不是。
"<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br><br>"
结果是
<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br>
答案 1 :(得分:3)
您的问题是,str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br/><br/>";
会返回"<a href='#' onclick='test('your_url')'>dd</a><br/><br/>"
之类的字符串。这将生成如下的html:
<a href='#' onclick='test('your_url')'>dd</a><br/><br/>
在这种情况下,onclick属性仅包含'test('。
试试这个:
str+="<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br/><br/>";
这将生成如下的html:
<a href='#' onclick='test("your_url")'>dd</a><br/><br/>
答案 2 :(得分:1)
直接使用:
test('"+elem[i].url+"')
而不是:
'test('"+elem[i].url+"')'
在方法中传递字符串。
答案 3 :(得分:1)
如果我没有误解你的问题,这是你的答案;
var elem=[ {"name":"husain","url":"http://google.com","age":21},
{"name":"ismail","url":"http://yahoo.com","age":22},
{"name":"nambi","url":"http://msn.com","age":23}
]
jQuery(function($){
var str="";
for(i=0;i<elem.length;i++){
var a =$('<a>',{href:'#',text:'dd'});
a.click(function(e){
test(elem[i].url)
});
$('.mytest').append(a).append($('</br>')).append($('</br>'));
}
});
function test(url){
console.log("url is "+url);
}
答案 4 :(得分:1)
对于传递多个参数,您可以通过将其与ASCII值连接来强制转换字符串,对于单引号,我们可以使用'
var str= "'"+ str+ "'";
您可以传递给onclick(str)
事件的相同参数。在我们传递多个参数的情况下它很有用。它适用于每个浏览器。
答案 5 :(得分:0)
直接使用:
test('elem[i].url')
而不是:
test('"+elem[i].url+"')
在方法中传递字符串。
答案 6 :(得分:0)
var funcName = "SelectPickerBtnSelectEvent('" + str + "')";
$(".btn.dropdown-toggle.btn-light").attr("onclick", funcName);
答案 7 :(得分:0)
可以使用元素上的数据属性来保存字符串。 然后在函数中检索数据。