0

サイトで Anarchy Media Player を使用しようとしていますが、メディア ファイル/URL が標準形式ではないため、コードを少し変更する必要がありました。現在、ビデオ ファイルを取得していますが、javascript はすべてのリンクを見つけており、プレーヤーを追加しようとしています。ビデオリンクにID「ビデオ」を追加しましたが、それでもページ上のすべてのリンクを見つけてプレーヤーを追加します。これらのリンクを分離して、プレーヤーをそれらにのみ追加するにはどうすればよいですか?

リンクを探す JavaScript の部分は次のとおりです。

var all = document.getElementsByTagName('a');
for (var i = 0, o; o = all[i]; i++) {
    if(o.idName="video" && o.className!="amplink") {
        // Add player code...
    }
}

ご協力ありがとうございました。

4

4 に答える 4

3

なぜあなたがこれをしていないのかわからない:

var all = document.getElementsByTagName('a');
for (var i = 0, len = all.length; i<len; i++) {
    if(all[i].idName=="video" && all[i].className!="amplink") {
        // Add player code...
    }
}

それはあなたのために働くはずです。配列の長さの値を保存したので、繰り返しごとに調べる必要はありません。最小限ですが、パフォーマンスがわずかに向上します。

また、比較ではなく、ifステートメントでidName実行したときにビデオに設定していました(これは常にtrueを返しますが、これが問題でした)。idName="video"値を比較するには、二重等号演算子 (==) または三重等号演算子 (===) を使用します。

于 2012-04-13T01:11:22.830 に答える
0

本当にそうじゃないのif (o.className == "amplink")

o.idName="video"それに加えて、あなたが持っているものは問題ありません(常にtrueを返すビットを除く): http://jsfiddle.net/VpMVe/

于 2012-04-13T01:15:03.880 に答える
0

querySelectorAllを使用して要素を取得できますが、古いブラウザー(IE8、FF3.5、Opera 10、Chrome 4、および Safari 3.1より古い) ではサポートされていません。これは、CSS セレクター (および jQuery) を使用して要素をターゲットにすることに似ています。これは、クラスを含むすべてのリンクを赤くするデモです。video

function get(selector) {
    return document.querySelectorAll(selector)
}

(function() {
    //get all <a> with class "video"
    var video = get('a.video');

    //for each, turn them red
    for (var i = 0; i < video.length; i++) {
        video[i].style.color = 'red';

        //in your case, do whatever you want for each target here

    }
}())​
于 2012-04-13T01:23:28.180 に答える
0

idName 属性はありません。それだけo.idです。ID は 1 つしか指定できないため、問題が発生する可能性があります。また、常にtrueと評価される同等性を比較するのではなく、割り当てています。複数のクラスがある場合、たとえばclass="amplink someOtherClass"!= amplink は true と評価されます。className で一致させることをお勧めします。このような:&& !o.className.match(/ampLink/)

別のクラスでビデオを作成し、代わりに試合を行います。

于 2012-04-13T01:47:09.360 に答える