簡體   English   中英

在動態創建的元素的onclick 函數的屬性中傳遞字符串

[英]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 值連接來轉換字符串,例如,對於單引號,我們可以使用&#39;

var str= "&#39;"+ str+ "&#39;";

您可以傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM