2011-12-23 1 views

答えて

0

置き換えられる行には、findAtags[i]の代わりにfindAtags[0]があります。

また、document.writeで何をやっていますか?

0

より簡潔にすることが可能でなければなりませんようにそれはそうけれども、私は、以下を提供することができます:

var body = document.getElementsByTagName('body')[0]; 
var as = body.getElementsByTagName('a'); 

for (var i=0,len=as.length; i<len; i++){ 
    var source = as[i].href; 
    var audioElem = document.createElement('audio'); 
    audioElem.src = source; 

    body.insertBefore(audioElem,as[i].nextSibling);  
} 

for (var r=as.length - 1; r>=0; r--){ 
    body.removeChild(as[r]); 
} 

JS Fiddle demo

audio要素は本質的に「見えない」ので、リンクがaudio要素に置き換えられている間は、(Webインスペクタ、Firebug、Dragonflyなどを介して)DOMを表示する必要があります。彼らがそこにいるのは...

1

フレームワークとグローバルなスコープの両方を使わずに簡単な方法。

注 - 最後から最初にアンカーで反復処理を行う場合は、それぞれの前に要素を挿入して同じループで削除することができます。

(function(a) { 
    for(var i = a.length; i--;) { 
     var e = a[i], 
      audio = document.createElement('audio'), 
      p = e.parentNode; 

     audio.src = e.href; 
     p.insertBefore(audio, e); 
     p.removeChild(e); 
    } 

    }) (document.getElementsByTagName('a'));