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);
    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 回答
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 回答