-2

我有两个链接需要用 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

4 回答 4

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)(在设置变量之后)并确保它是非空的。

于 2013-07-31T20:08:46.833 回答
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>
于 2013-07-31T20:09:28.003 回答
0

此代码应该可以工作:

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

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

var elements = document.getElementsByClassName('your_class');
for(var i in elements)
    elements[i].style.display = 'none';
于 2013-07-31T20:11:35.423 回答
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

于 2013-07-31T20:17:30.777 回答