2010-03-19 2 views
4

이것은 자바 스크립트의 첫 경험이며, 음 ... 음. 다음과 같은 현상이 발생합니다.Javascript가 내 vars를 정의하지 않고 계속 유지하면서 내 윙윙 거리는 소리가 들립니다. 도움?

function step_1(id) { 
    //blah blah 
    step_2(id); 
} 
function step_2(id) { 
    //blah blah 
    step_3(id); 
} 
function step_3(id) { 
    //blah blah 
    alert(id); 
} 

step_1(0); // I can stick any number here, same thing happens... 

경고가 표시되고 "정의되지 않음"이라고 표시됩니다. 그러나, 만약 내가 경고 (이드)를 던지면; step_2에서 두 경고 모두 "0"이라고 표시됩니다.

이유는 무엇입니까?/정의되지 않은 이유는 무엇입니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

난처럼, 각 기능에 ID를 재 할당 시도했다 :

var nid = id; 
step_2(nid); 

등 ...하지만 여전히 경고없이 작동하지 않습니다.

편집 : 제 예제가 정상적으로 작동하기 때문에 아마도 look at the blah blah that's going on in my code에 도움이됩니다. 내가 경고 (이드)를 꺼내지 않으면 괜찮습니다.

+0

나를 위해 작동 http://jsbin.com/ezeki –

+1

+1 "it 's harsh about my buzz". 하하. 나는 "Keene Maverick"이 그의 옷깃을 두 번 튀기는 지 궁금하다. –

+3

자바 스크립트 : UR 브라우저에서 UR 변수의 정의를 무시하십시오. –

답변

4

(라인 30)는 자신을 호출 checkUpload의 끝 부분에 있습니다 매개 변수없이 :이처럼 보인다

window.setTimeout('checkUpload();', 333); 

은 당신이해야 할 의미가 무엇인가 :

window.setTimeout(function() { checkUpload(id); }, 333); 

    // which is the equivalent to: 
    // window.setTimeout("checkUpload(" + id + ");", 333); 
+1

예! 하하, 너 멋지다! 나는 지금 완전히 바보 같이 느낀다. : D –

+0

"harshing-my-buzz"태그가 추가되었습니다. –

+0

미트볼에 약간의 사랑을 보여주고 체크 표시를하십시오. = D – Robusto

5

step_2와 step2의 차이점은 무엇입니까? 그리고 다른 모든 작은 단계는 ... 단계 유념하라

+0

Ack, 그 질문을 너무 빨리 타이핑하는 것입니다. 나는 그것을 고쳤다. 그 문제 만 간단하다면. –

+0

음, 방금 새 코드를 가져 와서 방화범 문자로 실행했는데 메시지로 "0"이라는 경고 메시지가 나타납니다. 그래서 네 문제가 뭔지 모르겠다. 아마 어쩌면 저기/blah blah 부분에 약간의 오류가 있을까요? – Robusto

+0

3 일 동안이 코드를 쏟아 부었지만 찾을 수 없습니다.방금 코드에 pastebin 링크를 추가했습니다. –

0

프로그램을 살해 할 수 있으며 버즈 2 단계와 step_2는 다른 두 가지

당신은 라인을 가지고
2

스크립트를 다시 호출 checkUpload()을 타이머를 통해 withou 기대하는 id 매개 변수를 따라 전달합니다.

라인 (30)

window.setTimeout('checkUpload();', 333); 

변경

window.setTimeout(function(){ checkUpload(id); }, 333); 
조언의 도움이 조각으로, 나는 주위에 당신의 실제 문제를 처음 게시하는 것이 좋습니다 향후

,하지로는 깎았 아래 예제에서 으로 생각합니다.)

+0

사실, 만약 당신이 당신의 조심성있는 예제가 실제로 문제를 설명해 주었다면 더 낫습니다! – Gabe

0

메이트,이 답변이 다른 사람들이 지적한 바와 관련이 있는지 모르겠지만, 귀하의 코드를 보지 않고 몇 가지 관찰을해야합니다.

if (uploadFrame.contentDocument.readyState == 'complete') { 
      if (uploadFrame.contentDocument.getElementById('new_image_id')) { 
        var new_id = uploadFrame.contentDocument.getElementById('new_image_id').innerHTML; 

정말! 당신은 '=='이 올바른 연산자는 아니지만 '==='가라는 것을 알아야합니다. js 학습자/사용자가 흔히 범하는 실수입니다. 또한 ID를 다시 확인해야 할 수도 있습니다 ('new_image_id' 또는 'new_image_'+id).

+0

readyState가 '완료'에 해당하는 문자열이 아닌 ==를 반환하는 상황이 있습니까? 아니면 자바 스크립트 === PHP에서 다른 ===? 아니면 ==/=== 개념을 완전히 오해합니까? 네, 'new_image_id'를 원합니다 - 방금 업로드 한 이미지의 mysql_insert_id()입니다. AJAX 요청에서 이미지 설명을 보낼 곳을 알려주십시오. –

+0

== 일반적으로 반환 값은 같음이 아닌 같음입니다. js의 동어 반복은 암캐이며 thumbrules은 사용 용도 만 === 및! == 그대로 사용합니다. 웹 참조 : http://www.webreference.com/js/column26/stricteq.html – questzen

관련 문제