Melewatkan string dalam atribut fungsi onclick dari elemen yang dibuat secara dinamis

Saya mencoba mengoper sebuah string dalam argumen fungsi onClick event handler dari elemen jangkar yang dibuat secara dinamis, lihat biola http://jsfiddle.net/shmdhussain/bXYe4/.

Saya tidak dapat mengoper string ke fungsi tersebut, tetapi saya dapat mengoper bilangan bulat ke fungsi tersebut. Tolong bantu saya dalam hal ini. Terima kasih sebelumnya.

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);
}
Larutan

Anda harus menggunakan sintaks string yang tepat. Ini

"<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"

akan menghasilkan

<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br>

Anda tidak dapat menggunakan ' untuk onclick dan parameter tes. Sebagai gantinya, gunakan \".

"<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br><br>"

Yang menghasilkan

<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br>
Komentar (0)

Masalah Anda adalah, bahwa str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br/><br/>"; akan mengembalikan sebuah string seperti "<a href='#' onclick='test('your_url')'>dd</a><br/><br/>". Ini akan menghasilkan html seperti ini:

<a href='#' onclick='test('your_url')'>dd</a><br/><br/>

Dalam kasus ini, atribut onclick hanya berisi 'test('.

Coba ini:

str+="<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br/><br/>";

Ini akan menghasilkan html seperti ini:

<a href='#' onclick='test("your_url")'>dd</a><br/><br/>
Komentar (2)

Langsung gunakan:

test('"+elem[i].url+"') 

bukannya:

'test('"+elem[i].url+"')' 

untuk melewatkan string di dalam sebuah metode.

Komentar (0)