2012-04-07 3 views
0

나는 다음 코드를 실행하고 나는 나를 위해 그것을 확인 보이는, 뭔가를해야만 그리워 왜 "공간이 정의되지 않은"오류 공간이 정의되지 않았습니다 이유는 무엇입니까?

window.onload = TitleFieldInit; 
function TitleFieldInit() { 
    var str = document.cookie.split("=")[1]; 
    var space = str.split("=")[1]; 
    space = space.split(";")[0]; 
    alert(space); 
    // while(space.indexOf('%20')+1) space = space.replace(/%20/,' '); 
    if (document.cookie != "") { 
     document.getElementById("TitleField").innerHTML = "Your Title is : " + space; 
    } 
}​ 

을 나는 파이어 폭스 rror에 잘못있어? 크롬에서 "Uncaught TypeError : Undefined" Thx의 메서드 'split '을 호출 할 수 없습니다.

답변

2

이 코드는 어떤 입력에서도 작동하지 않습니다.

str은 이미 =에 의한 스플릿 결과의 일부이며, 즉 = 심볼을 포함하지 않습니다.

그런 다음 결과를 다시 =으로 나눕니다. 물론 1 요소 배열이 반환되며 str.split("=")[1]은 항상 undefined이됩니다.

쿠키 값을 읽으려는 것처럼 보입니다 ... 그러나 두 번째는 .split("=")이 필요하지 않습니다.

아, 브라우저마다 다른 결과가 표시됩니다. 쿠키에 다른 데이터가 포함되어 있기 때문입니다.

추 신 : while(space.indexOf('%20')+1) space = space.replace(/%20/,' '); 대신에 space = space.replace(/%20/g,' ');을 쓰면 모든 내용을 한꺼번에 바꿀 수 있습니다.

관련 문제