人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: takanii
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●200ポイント

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

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() としました。


takaniiさんのコメント
ありがとうございました!助かりました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ