我正在尝试获取文本输入的值并检查其中是否有任何链接,然后获取这些链接并将其转换为标记。但是,当我运行此代码时,出现问题并完全冻结页面。基本上,我希望它检查“http://”,如果存在,继续添加到子串长度,直到字符串/链接结束。有一个更好的方法吗?
// 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++;
}
}
答案 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;