2013-07-31 12 views
-2

我有两个需要使用javascript隐藏/删除的链接。我所有的尝试都失败了。该锚一<td>这样的内部定义:无法使用javascript删除隐形锚点

<td> 
     <a id="btnReplaceAll" onclick="LaunchUploader(this, true);this.blur();return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span> </a> 
</td> 

首先我尝试了很明显的:

document.getElementById('btnReplaceAll').style.display = 'none'; 
document.getElementById('btnRetainAll').style.display = 'none'; 

但是他们仍然出现。然后我试过这个:

var btnReplaceAll = document.getElementById('btnReplaceAll'); 
var btnRetainAll = document.getElementById('btnRetainAll'); 
btnReplaceAll.parentNode.removeChild(btnReplaceAll); 
btnRetainAll.parentNode.removeChild(btnRetainAll); 

我该如何摆脱这些事情与JavaScript?请不要jQuery。

问题是重复的ID。有些元素在另一个文件中使用相同的ID定义,但这些文件都是通过.net汇编的,所以我没有注意到这种重复。

+1

你的榜样为我工作。你可以使用开发人员栏来查找JavaScript错误吗? –

+0

这已经很完美了。看到这个小提琴:http://jsfiddle.net/WHLnL/ – jcsanyi

+4

你显示这是作为表中的链接。你的所有标签都有唯一的ID吗?否则,你的代码将无法以各种方式工作。 – 2013-07-31 20:08:19

回答

0

你想删除它们,或者只是隐藏它们吗?

如果你想删除它们,这应该工作:

var btnReplaceAll = document.getElementById('btnReplaceAll'); 
btnReplaceAll.parentNode.removeChild(btnReplaceAll); 
var btnRetainAll = document.getElementById('btnRetainAll'); 
btnRetainAll.parentNode.removeChild(btnRetainAll); 

看起来你已经尝试过,但。

这意味着,您可能还有其他一些JavaScript,只要您将它们添加出来就将其添加回来。我会尝试在该行之后添加一个throw new Error()以作为测试。如果它们在上面的块后面消失,但是没有它,这意味着某种东西会让它们回到正确的位置。

如果你只是想隐藏它们,因为你有什么似乎是相同的交易也应该做隐藏。

此外,这可能看起来很明显,但只是仔细检查您使用的ID实际上是它们设置的ID(仔细检查字符大小写以及其他内容)。

此外,如果它们在Iframe中与您尝试执行移除代码的位置不同,则它将无法正常工作。您可以通过输出console.log(btnReplaceAll)(设置变量之后)并确保它非空来检查。

0

我需要看到您的DOM是什么样子,看看那里btnRetainALL是..但您在本例中显示的一个按钮,就可以做到这一点从DOM中删除:

<a id="btnReplaceAll" onclick="LaunchUploader(this, true);this.parentNode.removeChild(this);return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span> </a> 
0

此代码应该工作:

document.getElementById('btnReplaceAll').style.display = 'none'; 

但显然你有多个控件具有相同的ID,这就是为什么它失败。如果是这样的话,我宁愿添加一个特定的类到他们所有的和做:

var elements = document.getElementsByClassName('your_class'); 
for(var i in elements) 
    elements[i].style.display = 'none'; 
0

似乎你可能有重复的ID。如果是这样的情况下,尝试使用此代码来代替:

标记

<table id="myTable"> 
    <tr> 
     <td> 
     <a onclick="LaunchUploader(this, true);this.blur();return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span></a> 
     </td> 
       <td> 
     <a onclick="LaunchUploader(this, true);this.blur();return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span></a> 
     </td> 
       <td> 
     <a onclick="LaunchUploader(this, true);this.blur();return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span></a> 
     </td> 
       <td> 
     <a onclick="LaunchUploader(this, true);this.blur();return false;" href="javascript:void(0);" class="btnMed"><span>Replace All</span></a> 
     </td> 
    </tr> 
</table> 

的Javascript

var tbl = document.getElementById("myTable"); 
var links = tbl.getElementsByTagName("a"); 

for (var i = 0; i < links.length; i++) 
    links[i].style.display = "none"; 

这应该隐藏所有的表里面。

JSFIDDLE