Javascript 使用ajax更改html中对象的参数值

Javascript 使用ajax更改html中对象的参数值,javascript,html,ajax,Javascript,Html,Ajax,我正在构建一个小型web应用程序来运行midi文件。目前我正在使用quick time播放midi文件。问题是,在用户输入一些信息(比如搜索)之前,我不知道需要将对象绑定到哪个源。我需要能够将quicktime电影更新到正确的路径。可能吗?ajax支持这一点吗?ajax是一种技术。您要做的是使用JavaScript更改QuickTime电影路径 var qtMovie=document.getElementById('yourMovieEmbedID'); qtMovie.src='your n

我正在构建一个小型web应用程序来运行midi文件。目前我正在使用quick time播放midi文件。问题是,在用户输入一些信息(比如搜索)之前,我不知道需要将对象绑定到哪个源。我需要能够将quicktime电影更新到正确的路径。可能吗?ajax支持这一点吗?

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

var qtMovie=document.getElementById('yourMovieEmbedID');
qtMovie.src='your new source';
您应该将此代码包装在函数中,并在用户单击“确定”按钮时运行它。

如果您确实需要添加
(与调整属性值相反),我发现抓取
,克隆它,添加
然后替换当前的
标记似乎在大多数浏览器中都能工作(尽管在Firefox中似乎不起作用)。有关工作示例,请参见

该链接答案适用于页面上的每个
,以下是您如何对标记的单个实例执行此操作:

// 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);
//创建适当的
var elementToAppend=document.createElement('param');
elementToAppend.setAttribute('name','src');
elementToAppend.setAttribute('value','blah.midi');
//获取对
var obj=document.getElementById('YourMidPlayerObject');
//复制
var newObj=obj.cloneNode(真);
//将
newObj.appendChild(elementToAppend);
//替换页面上的
obj.parentNode.replaceChild(newObj,obj);
如果要修改的
已经存在,则情况会有所不同:

// 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);
//获取对
var obj=document.getElementById('YourMidPlayerObject');
//复制
var newObj=obj.cloneNode(真);
//获取对当前文件的引用
var param=document.getElementById('theParamId');
//复制
var newParam=param.cloneNode(true);
//更改
setAttribute('value','newblah.midi');
//将标签放回原处
newObj.replaceChild(newParam,param);
//替换页面上的
obj.parentNode.replaceChild(newObj,obj);

在这两种情况下,让它在IE、Opera、Safari和Chrome中工作的诀窍是替换页面上的
。将新的
附加到现有的
似乎不会使其重新分析值或加载新引用的内容。

是的,但我不需要强制重新加载页面以侦听正确的源代码吗?不,JavaScript是动态的。更改立即生效。好的,这似乎不起作用=[在输入此值时:函数SetSource(newSource){document.midiFilePlayer.src=newSource alert('new source'+document.midiFilePlayer.src);}src值不更新。请尝试使用.setAttribute('src','new source'));我明白了,它似乎确实更新了值,尽管它没有完全解决问题,但我似乎无法更新嵌入部分的src值,这是quick time插件代码的主要部分: