基本的 InnerHTML 问题

Posted

技术标签:

【中文标题】基本的 InnerHTML 问题【英文标题】:Basic InnerHTML issue 【发布时间】:2011-07-13 07:58:42 【问题描述】:

这是我在循环中使用的一段代码,用于将 html 元素附加到 Google Chrome 扩展程序的弹出窗口(.html):

'wordlist' 是一个单词数组。 'rand'是随机数生成函数。

代码:

for (l=1; l<11; l++)  
    var i = rand(wordlist.length;
    var h1 = document.createElement("h1");  
    h1.innerHTML = wordlist[i];
    document.body.appendChild(h1);

没有预先存在的 HTML 元素。因此,这段代码将 10 个随机单词附加到空白页。

现在,我不想将单词附加到页面,而是将链接附加到页面(例如:http://dictionary.reference.com/browse/**wordlist[i]**,这基本上是对特定单词的 dictionary.com 查询)。另外,我希望在单击时以new Chrome tab 打开此链接。我该怎么做?

P.S:我是前一天开始学习 HTML 和 JS 的,太兴奋了,开始写一些代码。如果我忽略了一个简单的 Google 解决方案来解决我的问题,我深表歉意。感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:
for (l=1; l<11; l++)  
    var i = rand(wordlist.length);
    var a = document.createElement("a");  
    a.setAttribute('href', 'http://dictionary.reference.com/browse/'.wordlist[i]);
    a.setAttribute('target', '_blank');
    h1.innerHTML = wordlist[i];
    document.body.appendChild(a);

基本上只需将 h1 更改为 a。 还要设置属性 href(链接)和 target(应该是 openend 的位置)。

【讨论】:

【参考方案2】:

如果你想使用 DOM,

for (l=1; l<11; l++)  
    var i = rand(wordlist.length;
    var a = document.createElement("a");
    a.href = "http://dictionary.reference.com/browse/" + wordlist[i];
    a.appendChild(document.createTextElement(wordlist[i]));
    document.body.appendChild(h1);

以下会更快,因为您只需附加一次 HTML(而且 DOM 操作成本很高):

var html = "";
for (l=1; l<11; l++)  
    var i = rand(wordlist.length);
    html += "<a href='http://dictionary.reference.com/browse/" + wordlist[i] + "'>"
                + wordlist[i]
          + "</a>";

document.body.innerHTML += html;

【讨论】:

【参考方案3】:

尝试将您的代码更改为以下内容:

for (l=1; l<11; l++)  
  var i = rand(wordlist.length);
  var a = document.createElement("a");  
  a.innerHTML = wordlist[i];
  a.href = "http://dictionary.reference.com/browse/" + wordlist[i];
  document.body.appendChild(a);

我在第 2 行修正了一个问题,您省略了右括号。 我也更明显地将您的 h1 更改为 a,并添加了设置其 href 的行。

【讨论】:

有效!非常感谢你,@cynicaloptimist。关于如何通过单击这些链接打开新标签的任何想法? link. @schellmax、@Alexander Gyoshev、@The_Butcher、@Erik、@cynicaloptimist。感谢您的时间。我很感激。【参考方案4】:

这就像改变一样简单

 h1.innerHTML = wordlist[i];

明确你所追求的,即:

 h1.innerHTML = "<a href='http://dictionary.reference.com/browse/"+wordlist[i]+"' target='_blank'>"+wordlist[i]+"</a>";

要使其在新选项卡中打开,您必须添加属性“目标”并将其值设为空白。我认为它在 HTML 5 中已被弃用...

【讨论】:

以上是关于基本的 InnerHTML 问题的主要内容,如果未能解决你的问题,请参考以下文章

如果语句和函数(基本)跟踪 div 的 innerHTML?

如何从 div 中获取 innerHTML?

innerHTML 没有正确更新

如何使用 .InnerHTML 方法放置特定的数组项

寻找与 PHP 等效的 getElementById 和 innerHTML

在 IE 中使用 .innerHTML 添加选项元素