JavaScript:如何添加属性?

时间:2012-04-14 12:02:48

标签: javascript

当我选中单选按钮时,我试图将目标属性添加到某些锚点;但它不起作用。

这是我的代码:

<body>
<ul id="main">
    <li><a href="https://www.google.co.uk/">Google</a></li>
    <li><a href="http://www.youtube.com/">YouTube</a></li>
    <li><a href="https://twitter.com/">Twitter</a></li>
</ul>
<input type="radio" name="input" id="input" />
<script type="text/javascript">
document.getElementById('input').checked = function changeTarget() {
    document.anchors.setAttribute('target', '_blank');
}
</script>
</body>

我做错了什么? (注意:我不想要JQuery解决方案)

感谢。

编辑:Phew。通过所有答案完成它,这是我的最终代码:

    document.getElementById('input').onclick = function changeTarget() {
    if(this.checked) {
        var b = document.getElementsByTagName('a');
        for (a = 0; a < b.length; a++) {
            b[a].target = '_blank';
        }
    }
}

4 个答案:

答案 0 :(得分:2)

您正在将单选按钮的“已选中”属性设置为某个功能。 “checked”属性是布尔值,指示当前是否选中了单选按钮。因此,该语句具有将其设置为true的效果。你可能打算让它成为一个事件处理程序,所以它应该是“onclick”而不是“checked”。

设置<a>标签的“target”属性不能像那样完成。您必须使用document.getElementsByTagName(),然后遍历返回的节点列表,设置每个的“target”属性。无需使用.setAttribute();只需在DOM节点上直接设置属性。

答案 1 :(得分:2)

document.anchors是一个集合,因此您需要迭代它。您还需要onclick事件 - 您可以确定是否选中了输入。

document.getElementById('input').onclick = function changeTarget() {
    if( this.checked ) {
        var anchors = document.getElementsByTagName("a");
        for(var i = anchors.length - 1; i>=0; i--) {
            anchors[i].target = '_blank';
        }
    }
}

根据MDN - document.anchors仅返回具有name属性的锚点 - gEBTN将返回所有锚点。

可替换地:

document.getElementById('input').addEventListener("click", changeTarget, false);

答案 2 :(得分:1)

据我所知,checked是一个属性,因此您无法为其分配函数。 您可以在#input上附加点击事件来更改主播target

document.getElementById('input').onclick = function()
{
    var anchors = document.getElementsByTagName('a');
    if(this.checked)
        for(var i = 0, s = anchors.length; i < s; i++) {
          anchors[i].target = '_blank';
        }
    else
        for(var i = 0, s = anchors.length; i < s; i++) {
          anchors[i].target = '_self';
        }
}

更新:在我的代码#input中必须有一个复选框

<input type="checkbox" id="input" />

答案 3 :(得分:1)

使用您编辑的代码,您可以在每次单击单选按钮时将目标设置为_blank。另外anchors - 在这种情况下,收集不是正确的。

document.getElementById('input').onclick = function changeTarget() {
    var n,a=document.links.length;
    if(document.getElementById('input').checked){
        for(n=0;n<a;n++){
            document.links[n].target='_blank';
        }   
    }
}

document.links是一个集合对象,其中包含文档中具有Ahref - 属性的nohref元素。集合对象与数组非常相似,您可以使用索引(n)来引用它的成员。