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

javascriptの質問です
http://q.hatena.ne.jp/1378611724 にて以下のプログラムを作っていただきました
以下のプログラムはjavascript単体で、色がつくように設定してもらっていますが
そうではなく
cssに .answer_marker(background-color:#ffff00) を指定しておいて
answer_marker クラス の有無で色を付ける付けないという風にして欲しいのですが
どこを書き換えればよいのでしょうか?
よろしくお願いします

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

▽最新の回答へ

質問者から
​​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 = &#8203;&#8203;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 = '';
 }
 }
}

1 ● a-kuma3
●300ポイント

こんな感じになると思います。

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 = ''; // ※削除
 spans[i].className = ''; // ★追加
 }
 }
}

二行コメントアウトして、一行追加しています。

関連質問

●質問をもっと探す●



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