動的に生成される要素のonclick関数'属性に文字列を渡す。

動的に作成されるアンカー要素のonClickイベントハンドラ関数'の引数に文字列を渡そうとしているのですが、fiddle 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とtestのパラメータに'は使えません。代わりに \" を使ってください。

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

という結果になります。

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

問題は、str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br/><br/>";"&lt.XXX;' のような文字列が返されます。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)

直接使用する。

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

の代わりに

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

の代わりに、メソッド内で文字列を渡します。

解説 (0)