2013-04-16 14 views
5

動的に作成されたアンカー要素のonClickイベントハンドラ関数の引数に文字列を渡そうとしています。http://jsfiddle.net/shmdhussain/bXYe4/を参照してください。onclick関数の要素の属性に動的に作成された要素の文字列を渡す

文字列を関数に渡すことはできませんが、関数に数値整数を渡すことができます。これで私を助けてください。前もって感謝します。

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

答えて

16

あなたは適切な文字列sytaxを使用する必要があります。この

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

あなたがたonclickやテストのパラメータのために 'を使用することはできません
<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br> 

になります。 。。

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

:使用\」の代わりに

"<a href='#' onclick='test(\""+elem[i].url+"\")'>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/>"のような文字列を返すこと、

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

あなたの問題があり、その結果これは、このようなHTMLが生成されます。この場合、onclick属性には 'test('。

これを試してみてください:直接使用

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

ありがとうございます。それは私のために働いています。 –

1

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

の代わりに:

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

の中の文字列を渡すために

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

これは、このようなHTMLが生成されます。方法。

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); 
} 
+0

これは実装する別の方法でもあります。しかし、私は以下のようなAmShaegarの答えから欲しいのと同じ方法で実装します。 –

1

は、複数のパラメータを渡すためにあなたのような、単一引用符のために、我々は&#39;

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

あなたはonclick(str)イベントに渡すことができる同じパラメータを使用することができますASCII値でそれを連結した文字列をキャストすることができます。複数のパラメータを渡す場合に役立ちます。すべてのブラウザで動作します。

0

直接使用:

test('elem[i].url') 

代わりに:

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

をメソッド内の文字列を渡します。

関連する問題