2012-10-26 1 views
0

텍스트 입력의 값을 가져 와서 링크가 있는지 확인한 다음 해당 링크를 가져 와서 태그로 만들려고합니다. 그러나이 코드를 실행하면 문제가 발생하고 페이지가 완전히 정지됩니다. 기본적으로 "http : //"가 있는지 확인하고 그 문자열/링크가 끝날 때까지 substr 길이를 계속 유지하려고합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?자바 스크립트가이 코드를 실행할 때 브라우저를 멈추는 경우

// the id "post" could possibly say: "Hey, check this out! http://facebook.com" 
// I'd like it to just get that link and that's all I need help with, just to get the  
// value of that entire string/link. 
var x = document.getElementById("post"); 
var m = x.value.indexOf("http://"); 
var a = 0; 
var q = m; 

if (m != -1) { 
    while (x.value.substr(q, 1) != " ") { 
     var h = x.value.substr(m, a); 
     q++; 
    } 
} 
+2

무한 루프가 발생할 가능성이 거의 없기 때문에 얼어 붙습니다. –

+0

해결하기 위해 노력 중입니다. D : – Zachrip

+0

또한 변수에 끔찍한 이름이 있습니다. 코드는 훑어보고 대략 이해할 수 있어야합니다. 이것은 여기에 해당하지 않습니다. –

답변

3

물론 - 무한 루프가 있습니다.

각 반복에서 변수 q을 업데이트하려고했을 것입니다.

q = q + a; 

하거나 q += a;

업데이트 :

나는 당신이 코드를 조금 변경을 참조하십시오.

나는 당신이하려는 것을 얻는다. 입력 값에서 URL을 가져 오려고합니다.

왜 이렇게 단순하지 않은 루프 대신에 RegExp을 사용하지 않으시겠습니까?

var match = x.value.match(/(?:^|\s)(http:\/\/\S+)/i); 
var url = match ? match[1] : null; 
+0

방금 ​​시도했는데, http : // facebook.com 링크를 시도하고 있는데 제대로 작동하지 않는 것 같습니다. http://zach.muny.us/widgets/youtube http : // – Zachrip

+0

다음에 한 글자 만 나오는 것으로 보입니다. 죄송 합니다만, '?'는 올바르지 않습니다. –

관련 문제