使用javascript无法删除不可见的锚点

时间:2013-07-31 20:03:31

标签: javascript html

我有两个链接需要使用javascript隐藏/删除。我所有这样做的尝试都失败了。锚点在<td>内部定义,如下所示:

<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汇编,所以我没有注意到重复。

4 个答案:

答案 0 :(得分: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)(在设置变量之后)并确保它是非空的来检查这一点。

答案 1 :(得分: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>

答案 2 :(得分:0)

此代码应该有效:

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

但显然你有多个具有相同id的控件,这就是它失败的原因。如果是这种情况,我宁愿为所有人添加一个特定的类并执行:

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

答案 3 :(得分: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