-2

JavaScript で非表示/削除する必要がある 2 つのリンクがあります。そうする私の試みはすべて失敗しました。<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

このコードは動作するはずです:

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

btnRetainALL がどこにあるかを確認するには、DOM がどのように見えるかを確認する必要がありますが、例に示されている 1 つのボタンについては、これを実行して 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

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 に答える
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)、それがnullでないことを確認してください。

于 2013-07-31T20:08:46.833 に答える