javascriptの質問です

htmlにjavascriptを埋め込みそれを
window.onload = function()で呼び出しサイトを装飾しているのですが
それを
<input type="button" value="装飾を消す" onclick="css()">
を押した時に装飾が消えて欲しいのですが その場合どのようにコードを書けばいいのでしょうか?
よろしくお願いします

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/09/08 12:42:04
  • 終了:2013/09/15 12:45:04

回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4537ベストアンサー獲得回数18882013/09/08 14:07:32

ポイント200pt

スクリプトの部分だけですが、こんな感じで。

window.onload = function() {
    var trs = document.getElementsByTagName("tr");
    var need_mark = false;
    for (var i = 0 ; i < trs.length ; ++i) {
        var ans = trs[i].children.item(3)
        re_ans = new RegExp("^[" + ans.innerHTML + "]");
        var ele_q = trs[i].children.item(2)
        var ele = ele_q.firstChild
        do {
            if (ele.nodeType == 3) {
                if (re_ans.exec(ele.nodeValue)) {
                    need_mark = true;
                }
            } else if (ele.nodeType == 1 && ele.nodeName == "BR") {
                need_mark = false;
            }
            if (need_mark) {
                var wrap = document.createElement("span")
                wrap.style.backgroundColor = "#ffff00";
                wrap.className = "answer_marker";           // ★目印
                ele_q.insertBefore(wrap, ele);
                wrap.appendChild(ele);
                ele = wrap;
            }
        } while (ele = ele.nextSibling);
    }
}

// 装飾を消す処理です
function erase_marker() {
    var spans = document.getElementsByTagName("SPAN");
    for (var i = 0 ; i < spans.length ; ++i) {
        if (spans[i].className == "answer_marker") {
            spans[i].style.backgroundColor = '';
        }
    }
}

元々の window.onload の処理で背景色を黄色に指定した要素に目印(★)をつけておきます。
装飾を消す処理では、目印を頼りに要素を探して、background-color を「無し」にします。

関数名は、処理内容を表している方がメンテしやすいので、css() ではなく erase_marker() としました。

id:takanii

ありがとうございました!助かりました!

2013/09/08 14:16:44

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません