当前位置:  开发笔记 > 编程语言 > 正文

在HTML中更改对象标记的数据内容

如何解决《在HTML中更改对象标记的数据内容》经验,为你挑选了2个好方法。

我有一个HTML页面,其中包含一个Object标记来托管嵌入的HTML页面.


但是,我需要更改object标签中的HTML页面.当前代码似乎创建了对象的克隆并用它替换现有对象,如下所示:

function changeObjectUrl(newUrl)
{
    var oContentArea = document.getElementById("contentarea");
    var oClone = oContentArea.cloneNode(true); 
    oClone.data = newUrl; 

    var oPlaceHolder = document.getElementById("contentholder"); 
    oPlaceHolder.removeChild(oContentArea); 
    oPlaceHolder.appendChild(oClone); 
}

这似乎是一种相当差的方式.有谁知道改变嵌入页面的'正确'方式?

谢谢!

编辑:在回答下面的答案,这里是我现在使用的页面的完整来源.使用setAttribute似乎不会更改Object标记的内容.




Test



Test1.html和Test2.html页面只是简单的HTML页面,分别显示文本'Test1'和'Test2'.



1> andi..:

您可以使用setAttribute执行此操作

document.getElementById("contentarea").setAttribute('data', 'newPage.html');

编辑:还建议您使用window.onload来确保已加载DOM,否则您将无法访问其中的对象.

它可能是这样的:

function changeData(newURL) {
    if(!document.getElementById("contentarea")) 
        return false;
    document.getElementById("contentarea").setAttribute('data', newURL);
}

window.onload = changeData;

您可以在此处阅读有关window.onload的更多信息


`setAttribute()`对我来说也不起作用.dom检查器中的值确实发生了变化,但``标记的呈现内容不会更新.

2> Abhi Beckert..:

这似乎是一个浏览器错误,setAttribute()应该工作.我找到了这个解决方法,它似乎适用于所有浏览器:

var newUrl = 'http://example.com';
var objectEl = document.getElementById('contentarea');
objectEl.outerHTML = objectEl.outerHTML.replace(/data="(.+?)"/, 'data="' + newUrl + '"');

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有