当我选中单选按钮时,我试图将目标属性添加到某些锚点;但它不起作用。
这是我的代码:
<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';
}
}
}
答案 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
是一个集合对象,其中包含文档中具有A
或href
- 属性的nohref
元素。集合对象与数组非常相似,您可以使用索引(n
)来引用它的成员。