2011-01-04 1 views
0
$.each(json.data,function(i,fb){ 

//some code here... 

if (msg.length > 150) { 
       msg = msg.substr(0,200)+"..."; 
      } 

//more code here... 
}); 

여기에 문제가 있습니다. msg가 정의되지 않은 경우 오류가 발생하고 브라우저에 아무 것도 표시되지 않습니다.변수가 각 루프 내부에 설정되지 않은 경우 무언가를 표시하는 방법은 무엇입니까?

가능한 해결책 : msg가 정의되지 않은 경우에 대한 기본 메시지를 작성하십시오.

시도 :

if (msg = 'undefined') { 
msg = 'some default message'; 
} else if (msg.length > 150) { 
msg = msg.substr(0,200)+"..."; 
} 

문제 : 각 항목, 동일한 기본 메시지를 얻을 수 있기 때문에 은 위의 시도 대신에 이러한 경우가 있었다에만 기본 메시지를 필요없이 작동하지 않았다 msg는 "설정"되어 있지 않습니다.

요청 :이 사이트의 다른 경우 내가 MSG가 정의되지 않은 경우 각 항목에 기본을 보여 있도록 적절한 코드를 작성하기 위해 여러분의 도움이 가질 수, 그것을 표시?

나를 제대로 돕기위한 정보가 부족하면 알려주십시오. 나는 지금 정말로 나쁜 위치에있다. :의

고마워, MEM

+0

당신이 당신의 웹 서비스에서받은 JSON 데이터를 메시지인가? 내가 알아 차 렸던 또 다른 사항은 == if (msg == 'undefined')와 함께 사용해야한다는 것입니다. 어쩌면 전체 AJAX 호출을 게시하여 더 많은 컨텍스트를 얻을 수 있습니다. – webdad3

답변

3

if 문에 =이 아닌 ==을 써야합니다. 이 정의되지 않은 경우 테스트하려는 경우에도,이 같은 typeof을 사용해야합니다

if (typeof msg == 'undefined') 

typeof 실제로 undefined라는 객체에 비교하여보다 안전 사용하여 비교의이 아이디어를. 그 이유는 객체를 다시 정의 할 수 있지만 typeof의 결과는 절대로 변경되지 않기 때문입니다. 나는 누구나 할 정도로 미친 왜 몰라,하지만 작성할 수 있습니다 :

undefined = "hi there"; 
if (msg == undefined) // oh noes! 
    ... 
if (typeof msg == "undefined") // still works! 
3
if (msg = 'undefined') { 

->

if (msg == undefined) { 

두 가지

  1. 우리는 객체를 비교하는 ==를 사용 = 변수를 할당 할 수 있습니다. 자바 스크립트에서도.
  2. 'undefined'은 '정의되지 않은'텍스트가있는 문자열입니다. undefined (따옴표없이)는 자바 스크립트의 전역 객체입니다. 아니면 전역 객체가 아니지만 변수가 있는지 여부를 확인하는 데 사용할 수있는 것은 무엇이든간에.
+0

고마워요! :) (나는 수치심으로 지금 달릴 것입니다.) :) – MEM

+0

예,'undefined'는'null'과 정확히 동일합니다 – JCOC611

+0

@ JCOC611 : 틀렸어. undefined === null을 테스트하면 다음과 같이 나타납니다. – Jakob

1
if (msg == undefined) ... 

트릭 = (실제 변수 세트) 대 == (비교)을 사용하는 것이다.

관련 문제