1
 var v = $(forum[yourVersion]+' a[href*="youtube.com/v/"]');
   for ( i = 0; i < v.length; i++) {
     var match = v[i].href.match(/\(((\s*?.*?)*?)\)/);
     v[i].href = v[i].href.replace(match[0],'');
     var c = v[i].href.replace(/(www\.)?youtube.com/, 'img.youtube.com');
     var d = c.replace('v','vi');
     v[i].outerHTML= '<a class="uTubeE" rel="vid_gallery" title="'+match[1]+'" href="' + v[i].href + '"><span class="uTubeE_overlay"></span><img src="'+ d +'/0.jpg"/>';
     v[i].className='uTubeE';
    }

私はこの2つを正しく機能させようとしていますが、以前に誰かがこれについて覚えて.match()実行するのを手伝ってくれました-

var match = v[i].href.replace(/\(((\s*?.*?)*?)\)/,''); 

もちろんうまくいきましたが、タイトル属性などの後で使用するために match[0] と match[1] を使用できるように取得する必要があります。

誰でもこれを手伝ってもらえますか?

これは、YouTubeビデオのデフォルトのサムネイルを使用することです

     var c = v[i].href.replace(/(www\.)?youtube.com/, 'img.youtube.com');
     var d = c.replace('v','vi');

私が一致しているURLは言うwww.youtube.com/v/dje838329が、URLは次のように表示される www.youtube.com/v/dje838329(titleOfMovie)

後で使用するために (titleOfMovie) のデータを取得しようとしています。

方法が間違っていると言う代わりに、おそらく何が間違っているかなど、いくつかの有用なコメントをしてください。

4

2 に答える 2

1

.match()未定義の0を返すことを使用

それはあなたが得ているエラーではありません。問題は、正規表現が一致しない可能性がある一致結果0のプロパティにアクセスしていることです。結果を得る前に、それをテストする必要があります。null

使用replaceは機能しましたが、後で使用するために match[0] と match[1] を使用できるように取得する必要があります

置換関数を試すこともできますが、それは見苦しくなります。match特に派手な操作をしていないので、あなたは大丈夫です。一致するインデックスを取得して、URL をスライスするだけです。

ところで、jQuery が利用できる場合は、それを使用する必要があります。

var v = $(forum[yourVersion]+' a[href*="youtube.com/v/"]').each(function() {
    var url = this.href,
        match = url.match(/\(((\s*?.*?)*?)\)/);
    if (match == null)
        return; // abort!
    var d = url.replace(/(www\.)?youtube.com\/v/, 'img.youtube.com/vi');
    this.href = url.slice(0, match.index);
    this.className = "uTubeE"
    this.rel = "vid_gallery";
    this.title = match[1];
    this.innerHTML = '<span class="uTubeE_overlay"></span><img src="'+ d +'/0.jpg"/>';
});
于 2013-07-01T01:52:54.767 に答える