[英]Passing a string in onclick function's attribute of element dynamically created element
我試圖在動態創建的錨元素的 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);
}
您必須使用正確的字符串語法。 這
"<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"
會導致
<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br>
您不能將 ' 用於 onclick 和測試參數。 改用\\"。
"<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br><br>"
這導致
<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br>
你的問題是, 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/>
直接使用:
test('"+elem[i].url+"')
代替:
'test('"+elem[i].url+"')'
在方法中傳遞字符串。
如果我沒有誤解你的問題,這是你的答案;
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);
}
要傳遞多個參數,您可以通過將字符串與 ASCII 值連接來轉換字符串,例如,對於單引號,我們可以使用'
var str= "'"+ str+ "'";
您可以傳遞給onclick(str)
的相同參數。在我們傳遞多個參數的情況下很有幫助。它適用於每個瀏覽器。
直接使用:
test('elem[i].url')
代替:
test('"+elem[i].url+"')
在方法中傳遞字符串。
var funcName = "SelectPickerBtnSelectEvent('" + str + "')";
$(".btn.dropdown-toggle.btn-light").attr("onclick", funcName);
也許相反,使用元素上的數據屬性來保存字符串。 然后在函數中檢索數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.