【问题标题】:changing param value of object in html using ajax使用ajax更改html中对象的参数值
【发布时间】:2010-11-15 04:17:49
【问题描述】:

我正在构建一个小型 Web 应用程序来运行 MIDI 文件。目前我正在使用快速时间来播放 MIDI 文件。问题是我不知道我需要将对象绑定到什么来源,直到用户输入一些信息(比如搜索)。我需要能够将快速电影更新到正确的路径。可能吗? ajax 支持吗?

【问题讨论】:

    标签: javascript html ajax


    【解决方案1】:

    AJAX 是一种技术。您要做的是使用 JavaScript 更改 QuickTime 电影路径。

    var qtMovie=document.getElementById('yourMovieEmbedID');
    qtMovie.src='your new source';
    

    您应该将此代码包装在一个函数中,并在用户单击“确定”按钮时运行它。

    【讨论】:

    • 是的,但我不需要强制页面重新加载才能收听正确的源吗?
    • 不,JavaScript 是动态的。更改会立即生效。
    • 好的,这似乎不起作用 =[ 输入此值时: function SetSource(newSource) { document.midiFilePlayer.src = newSource alert('new source ' + document.midiFilePlayer.src) ; } src 值不会更新。
    • 尝试使用 .setAttribute('src', 'new source');
    • 我明白了,它似乎确实更新了值,虽然它并没有完全解决问题,但我似乎无法更新嵌入部分的 src 值,这是有问题的部分快捷插件代码:
    【解决方案2】:

    如果您确实需要添加 <param>(而不是调整属性值),我发现抓取 <object>,克隆它,添加 <param> 和然后替换当前的<object> 标签似乎在大多数浏览器中都有效(尽管它似乎在 Firefox 中无效)。有关工作示例,请参阅 this answer

    链接的答案适用于页面上的每个<object>,以下是针对单个标签实例的方法:

    // create the appropriate <param>
    var elementToAppend = document.createElement('param');
    elementToAppend.setAttribute('name', 'src');
    elementToAppend.setAttribute('value', 'blah.midi');
    // get a reference to the <object>
    var obj = document.getElementById('yourMidiPlayerObject');
    // duplicate the <object>
    var newObj = obj.cloneNode(true);
    // append the <param> to the <object>
    newObj.appendChild(elementToAppend);
    // replace the <object> on the page
    obj.parentNode.replaceChild(newObj, obj);
    

    如果你要修改的&lt;param&gt;已经存在,那就有点不一样了:

    // get a reference to the <object>
    var obj = document.getElementById('yourMidiPlayerObject');
    // duplicate the <object>
    var newObj = obj.cloneNode(true);
    // get a reference to the current <param>
    var param = document.getElementById('theParamId');
    // duplicate the <param>
    var newParam = param.cloneNode(true);
    // change the value of the <param>
    newParam.setAttribute('value', 'newblah.midi');
    // replace the <param> tag on the <object>
    newObj.replaceChild(newParam, param);
    // replace the <object> on the page
    obj.parentNode.replaceChild(newObj, obj);
    

    在这两种情况下,让它在 IE、Opera、Safari 和 Chrome 中运行的技巧是替换页面上的&lt;object&gt;。将新的&lt;param&gt; 附加到现有的&lt;object&gt; 似乎不会使其重新解析值或加载新引用的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      相关资源
      最近更新 更多