javascriptの質問です

以下のjavascriptのhoge1を実行すると
テーブルの1行目が消えます
hoge1を実行した後hoge2を実行すると1行目も2行目も両方消えてしまいます
hoge1を実行した後hoge2を実行しても2行目だけ消えて欲しいのですが
その場合hoge2に今までのjavascriptを無効化するコードを追加しないといけないと思うのですが
無効化するコードを教えて下さい

function hoge1() {
var c = document.querySelectorAll("td:nth-child(1)");
for (var d = 0; d < c.length; d++) {
c[d].style.display = "none"
}
};
function hoge2() {
var c = document.querySelectorAll("td:nth-child(2)");
for (var d = 0; d < c.length; d++) {
c[d].style.display = "none"
}
};

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/01/26 21:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:jislotz No.1

回答回数19ベストアンサー獲得回数7

ポイント300pt

すでにrouge_2008さんがコメントされていて、私もそのとおりだと思いますが、スタイルシートのルールを直接書き換えるという方法もあります。

<style>
/* これが0番目のstyle要素だとする。 */
td:nth-child(1) { display: table-cell; }
td:nth-child(2) { display: table-cell; }
</style>
<script>
function hoge1() {
var rules = document.getElementsByTagName('style')[0].sheet.cssRules;
rules[0].style.cssText = 'display: none';
rules[1].style.cssText = 'display: table-cell';
}
function hoge2() {
var rules = document.getElementsByTagName('style')[0].sheet.cssRules;
rules[0].style.cssText = 'display: table-cell';
rules[1].style.cssText = 'display: none';
}
</script>

  • id:rouge_2008
    1行目のスタイル「display:none;」を元に戻してはいかがでしょう?


    var c = document.querySelectorAll("td:nth-child(1)");
    for (var d = 0; d < c.length; d++) {
    c[d].style.display = "table-cell"
    }

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません