1

これは、IE9 を除くすべてのブラウザーで機能し、getAttribute は IE9 で null を返します。

function getFlashMovieObject(movieName){
    if(document.embeds[movieName])
      return document.embeds[movieName];
    if(window.document[movieName])
      return window.document[movieName];
    if(window[movieName])
      return window[movieName];
    if(document[movieName])
      return document[movieName];
}

function ChangePlaylist(newval,mymovievarmp3){
    var mp3Player = getFlashMovieObject(mymovievarmp3);
    var newstring = mp3Player.getAttribute('data');
    var broken = new Array();
    broken = newstring.split('?');
    mp3Player.setAttribute('data',broken[0]+'?'+broken[1]+'?'+newval)
}

JQueryを使用していますが、まだ機能しません

    var mp3Player = getFlashMovieObject(mymovievarmp3);
    var newstring = $("#mp3Player ").data("data");
4

2 に答える 2

0

次のコードを試してください。

 function ChangePlaylist(newval,mymovievarmp3){
     var mp3Player = getFlashMovieObject(mymovievarmp3);
     //previus declaration
     //var newstring = mp3Player.attributes['data'].nodeValue;

     //Although i'm not familiar with getFlashMoiveObject, if that function
     //a reference to the javascript object, the next should work fine. 
     var newstring = $(mp3Player).attr('data');

     //If that does not work, then try adding an `id`, or a `class` to the object
     //and then do one of the next:

     //using `id`:
     //var newstring = $('#mp3PlayerId').attr('data');


     //using `class`:
     //var newstring = $('.mp3PlayerClass').attr('data');

     //Also note that `id` and `class` are standard attributes, and so they values can
     //be accessed using regular getAttribute.

     var broken = new Array();
     broken = newstring.split('?');
     //mp3Player.setAttribute('data',broken[0]+'?'+broken[1]+'?'+newval)

     //Update - To set the a value to data attribute:
     $(mp3Player).attr('data',broken[0]+'?'+broken[1]+'?'+newval);
 }

IE には、要素から非標準属性を取得する際の問題があります。

更新

次のような別のライブラリを使用したい場合は、jQuery簡単に次のようなことができます

  $('#elementId').attr('data');

そして、クロスブラウザになることは間違いありません。

更新 2

コードを更新し、少し説明しました。それがあなたを助けることを願っています!

アップデート 3

次のコードを使用して、値をデータに設定できます。

     $(mp3Player).attr('data',value);
于 2012-06-21T20:41:45.087 に答える
0

試す

function ChangePlaylist(newval,mymovievarmp3){
    var mp3Player = getFlashMovieObject(mymovievarmp3);
    var newstring = mp3Player.getAttribute('data');
    var broken = new Array();
    broken = newstring.split('?');
    mp3Player.setAttribute('data',broken[0]+'?'+broken[1]+'?'+newval)
}

あなたが物事を逃れた理由がわかりました。getAttribute() 行で壊れていると思います。
jQuery をインポートして $(elem).data() を使用することをお勧めします。

あなたが持っているとしましょう:

<a data-someval="blah" />

次に、これ:

$("#elem").data("someval");

何とか返す必要があります。

于 2012-06-21T19:48:49.820 に答える