2013-04-16 2 views
5

동적으로 생성 된 anchor 요소의 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> 

자바 스크립트 :

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을 사용해야합니다. 당신은 onclick을 위해 '사용 및 테스트의 매개 변수 수 없습니다

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

에서이

"<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(\""+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

이것은 또한 구현하는 또 다른 방법입니다. Whispered. 하지만 저는 AmShaegar의 대답에서 아래처럼 대답하고 싶습니다. –

1

여러 매개 변수를 전달하는 당신 같은, 작은 따옴표를 위해 우리가 &#39;

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

당신이 onclick(str) 이벤트에 전달할 수있는 동일한 매개 변수를 사용할 수있는 ASCII 값을 연결하여 문자열을 캐스팅 할 수 있습니다. 여러 매개 변수를 전달하는 경우 유용합니다. 모든 브라우저에서 작동합니다.

0

직접 사용

test('elem[i].url') 

대신 :

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

방법 안의 문자열을 전달하는.

관련 문제