2012-12-12 2 views
2

후 나는 코드가 있습니다. 또한인라인 자바 스크립트 함수 호출 실종] 요소 목록

, 나는 함수가 정의되어 : 스팬 요소는 그 함수를 호출 할 때

someFunction: function(element) { 
    console.log(element); 
    .... // some code 
} 

하지만, 내가 얻을 오류 : 나는 Firebug 그것을 디버깅 할 때

SyntaxError: missing ] after element list 
someFunction([object Object]); 

, 나는

참조
<span onclick="someFunction([object Object]);"> 
    <a href="#">Element information</a> 
</span> 

어떻게 구체적 요소를 인자로 사용하여 해당 함수를 호출 할 수 있습니까?

+1

요소의 유형은 무엇입니까? – ankur

답변

4

연결에서 문자열로 변환 될 때 요소를 전달할 수 없습니다. 객체가 문자열로 변환되면 [Object object]가 출력됩니다. 이것은 당신이 당신의 디버그에서보고있는 것입니다.

나의 제안 : 당신은 같은 기간에 데이터로 요소를 추가 할 수 있습니다 :

$('span).data('element', element);

그리고 된 SomeFuncion에서 원하는 검색 :

var element = $(this).data('element');

또 다른 옵션은 자바 스크립트 클릭하여 결합하는 것입니다 요소가 초기화되는 위치에서. 당신이 jQuery를 일부 DOM 요소를 구축하려고하면이

function anotherFunction() { 
    var element = {}; 

    // Initialize element 
    ... 

    // I have already got the element initialized, now I can bind the click 
    $('span').click(function() { 
    // For your debug and validation 
    console.log(JSON.stringify(element)); 
    }); 
} 
1

처럼, 당신은이 작업을 수행해야합니다

// Wrong: $('<span onclick="someFunction(' + element + ');"><a href="#">Element information</a></span>'); 
// Right: build up the element step by step 
var data = $('<span/>') 
      .append(
       // build up the child <a> element here 
       $('<a href="#"/>') 
       .text("Element information") 
       //.attr('href',"#") Don't really need this 
      ) 
      .click(
       // Here is a real inline function 
       function(){ 
        someFunction(element); 
       } 
      ); 

참고 : jQuery를에 .click는 클릭 이벤트에 대한 이벤트 처리기를 할당 할 수 있습니다. 당신의 코드에서

console.log((new Object()).toString()); // [object Object] 
console.log("blah" + (new Object())); // blah[object Object] 

: 원래 코드에서


, 당신은 문자열로 변환, 그 객체에 toString 적용을 초래할 수있는 객체와 문자열을 연결하는 시도 그것은 당신의 객체가 실제로 jQuery 객체 인 것으로 보이지만 차이는 없습니다.

그래서 onclick을 형성하기 위해 사용 결과 "코드" 무효입니다 : [1, 2]이 두 요소를 가진 배열이 같은

someFunction([object Object]); 

[]는 자바 스크립트에서 배열을 구성하는 데 사용됩니다. 그러나 [object Object]은 잘못된 JavaScript 구문이므로 오류가 발생합니다.

어쨌든 jQuery를 사용해도 DOM 요소를 이벤트로 빌드하는 것은 올바르지 않습니다. 위의 올바른 방법을 보여줍니다.

0

또한 시도 할 수 :

var data = $('<span onclick="someFunction(' + JSON.stringify(element) + ');"><a href="#">Element information</a></span>');

기능 : 전화했을 때

someFunction: function(element) { console.log(element); .... // some code }

는 JSON 개체를 반환해야합니다.

관련 문제