添加目标="空白"用javascript链接

时间:2012-08-13 11:27:42

标签: javascript html forms hyperlink

我正在尝试将target="_blank"添加到页面上的链接,具体取决于复选框的点击。

在javascript方面我有:

 function newTab(v) {
      if(v.tab.checked == true) { 
        document.getElementsByTagName('a').setAttribute('target', '_blank');
      } else {
        document.getElementsByTagName('a').setAttribute('target', '_self');
      }
  } //end function

在HTML方面,我有:

<form>
    <input type="checkbox" name="tab" onclick="newTab(this.form)" />
    <label>Open Links In New Tab?</label>
</form>

<a href="//mail.google.com">Gmail</a>

当然,它并不像我想象的那么简单,所以它不起作用。

该页面包含十几个链接,因此我需要使用复选框来应用页面上的所有链接 - 为什么我使用getElementsByTagName()。任何帮助表示赞赏!

编辑:

有效的代码如下:

  function newTab(f) {
    var els = document.getElementsByTagName('a'); //read anchor elements into variable
    if(f.tab.checked == true) { //If the box is checked.
      for (var i in els) {
        els[i].setAttribute('target', '_blank'); //Add 'target="blank"' to the HTML
      } 
    } else { // not checked...
      for (var i in els) {
        els[i].setAttribute('target', '_self'); //Add 'target="self" to HTML
      }
    }
  } //end function. 

1 个答案:

答案 0 :(得分:4)

getElementsByTagName()返回一个节点集。您需要迭代它并依次将更改应用于每个。你现在拥有的更像是jQuery语法,它在内部为你处理。

这将显示在控制台中。对于JS问题,始终检查控制台,然后再想知道什么是错误的。

var els = document.getElementsByTagName('p');
for (var i=0, len = els.length; i<len; i++)
    els[i].setAttribute('name', 'value');

此外,对于复选框,使用更改,而不是单击事件,因为有人可能通过键盘切换它们,而不是鼠标。最后,您应该考虑集中处理事件,而不是HTML中指定的内联DOM-zero事件。造成这种情况的众多原因超出了本问题的范围。

相关问题