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++;
    }
}
4

1 回答 1

3

当然是——有一个无限循环。

您可能想q在每次迭代中更新变量。

q = q + a;

要不就q += a;

更新:

我看到你改变了一点代码。

我明白你想要做什么。您正在尝试从输入值中获取 URL。

你为什么不直接使用一个简单RegExp的而不是这个不清楚的循环呢?

var match = x.value.match(/(?:^|\s)(http:\/\/\S+)/i);
var url = match ? match[1] : null;
于 2012-10-26T22:46:45.443 回答