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 に答える