document.write和DOM元素.AppendChild(文本)之间的Javascript差异

document.write和DOM元素.AppendChild(文本)之间的Javascript差异,javascript,dom,Javascript,Dom,我想嵌入并显示一个flash文件。它在document.write中运行良好,但当我尝试使用AppendChild(文本)时,它不会显示flash,而是显示纯文本。改为使用什么DOM方法 <html> <head> <script> function addText(text,elementId){ if (document.createTextNode){ var mytextNode=document.createText

我想嵌入并显示一个flash文件。它在document.write中运行良好,但当我尝试使用AppendChild(文本)时,它不会显示flash,而是显示纯文本。改为使用什么DOM方法

  <html>
  <head>
 <script>
  function addText(text,elementId){
    if (document.createTextNode){
      var mytextNode=document.createTextNode(text)
      document.getElementById(elementId).appendChild(mytextNode)
    }
  }

    </script>

  </head>

  <body>

                <div id="test">

                </div>

  <script>
      addText("<embed height='100' width='100' type='application/x-shockwave-flash' allowscriptaccess='always' wmode='transparent' quality='high' swliveconnect='true' name='test' id='test' src='test.swf'>",'test');
  </script>     
  </body></html>

函数addText(text,elementId){
if(document.createTextNode){
var mytextNode=document.createTextNode(文本)
document.getElementById(elementId).appendChild(mytextNode)
}
}
添加文本(“,”测试“);

因为您正在创建文本节点,而不是序列化HTML

您可以将函数更改为

function addHTML(html, elementId) {
    if (document.createElement) {

        var holder = document.createElement('div');

        holder.innerHTML = html;

        var target = document.getElementById(elementId);

        while (holder.hasChildNodes()) {
            target.appendChild(holder.firstChild);
        }
    }
}

乍一看,这样一种方法常常显得不必要的嘈杂和毫无价值,但它与HTML的自然语法进行了更理智的集成。如果您希望能够将HTML直接写入文档中,您可能更喜欢使用jQuery这样的框架,它允许以下语法:

$("<embed src='…'/>")
$(“”)

但是,如果您只是为了嵌入Flash而这样做,请使用。

您是想使用
.innerHTML
?我想您需要的是document.createElement()。这可能有助于两个答案都是好的,我认为这是因为您的分数较少;)哈哈,这是一个有趣的原因。我会给@alex一个+1来帮助保持平衡P非常感谢,很不幸,一个人不能检查两个好答案。
$("<embed src='…'/>")