2012-04-13 15 views
0

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

は、リンクを探しますジャバスクリプトの一部です:

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

はあなたの助けをいただき、ありがとうございます。

+0

なぜ[getElementsByClassName](https://developer.mozilla.org/en/DOM/document.getElementsByClassName)ですか? – ajax333221

+0

@ ajax333221 IEのため... jQueryを使用することは悪い考えではありませんが。 – jli

答えて

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="video"を行ったときに、ビデオにidNameを設定していましたが、比較していません(問題は常にtrueを返します)。値を比較するには、double equals演算子(==)またはtriple equals演算子(===)を使用します。

+0

@ Elliot、それは動作していないようだが、div id = videoとvar all = document.getElementById( "video").getElementsByTagName( "a"); *を使用してリンクをラップしてしまった。今私は別の問題に直面している、必要なプレーヤーだけを起動するメディアの種類を認識する必要があります。私はおそらく新しいスレッドを開始する必要があります。 –

+0

ええ、それは私がやりたいことです。 –

+0

@ Elliot、ありがとうございます。 –

0

あなたはif (o.className == "amplink")を意味していませんか?あなたがquerySelectorAllを使用して要素を取得することができますhttp://jsfiddle.net/VpMVe/

+0

NM。私は間違っていた。 –

0

、それはnot supported in older browsers(つまりIE8、FF3.5その後、高齢になります、:あなたが持っているもの、そのほかに

は(常にtrueを返しますo.idName="video"ビットを除く)大丈夫ですOpera 10、Chrome 4、およびSafari 3.1)をサポートしています。 CSSセレクタ(およびjQuery)を使用して要素をターゲット設定するのと同様です。ここにはa demoのクラス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 

    } 
}())​ 
0

idName属性はありません。それはちょうどo.idです。 IDが1つしかないので、いくつかの問題が発生する可能性があります。常に真と評価される平等を比較するのではなく、それを割り当てることになります。 2つ以上のクラスがある場合、たとえばclass="amplink someOtherClass"!= amplinkはtrueと評価されます。 classNameのマッチを行う方がよい。このように:&& !o.className.match(/ampLink/)

動画を別のクラスにして、代わりにマッチします。

関連する問題