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

javascriptの問題です
以下のfunction aとbを結合するにはどう書けばいいのでしょうか?
function bの中身をaの最後に追加して実行しましたが動きませんでした
function a() {
var trs = document.getElementsByTagName("tr");
var need_mark = false;
for (var i = 0 ; i < trs.length ; ++i) {
var ans = trs[i].children.item(5);
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 = "#ffffff";
wrap.className = "answer_marker";
ele_q.insertBefore(wrap, ele);
wrap.appendChild(ele);
ele = wrap;
}} while (ele = ele.nextSibling);}}
function b()
{
var box = document.querySelectorAll("td:nth-child(6)");
for ( var i = 0; i < box.length; i++ ) {
box [i].style.color = '#ffffff';
}}

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

▽最新の回答へ

1 ● a-kuma3
●200ポイント

function bの中身をaの最後に追加して実行しましたが動きませんでした

function a 最後が、このように記載されているのが、とても気になります。

 wrap.appendChild(ele);
 ele = wrap;
 }} while (ele = ele.nextSibling);}}

function b の中身を以下のように追加していますか?

 wrap.appendChild(ele);
 ele = wrap;
 }} while (ele = ele.nextSibling);} // ★
 var box = document.querySelectorAll("td:nth-child(6)");
 for ( var i = 0; i < box.length; i++ ) {
 box [i].style.color = '#ffffff';
 } // ★
} // ★

コメントで「★」を入れている辺りの、閉じる中括弧の数をとか、開くところとの対応を確認してください。


余計なおせっかいかもしれませんが、中括弧の書き方のスタイルが良くないです。
中括弧は処理のブロックを表すので、開始と終了がはっきりしていて、入れ子になっているのが分かるように、インデントを入れた方が良いと思います。
インデントの空白は質問のエリアに書いたために消えているのでしょうが、閉じる中括弧が連続して書かれていることが、ミスを誘発します。

function a_and_b() {
 /* function a() */
 var trs = document.getElementsByTagName("tr");
 var need_mark = false;
 for (var i = 0 ; i < trs.length ; ++i) {
 var ans = trs[i].children.item(5);
 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 = "#ffffff";
 wrap.className = "answer_marker";
 ele_q.insertBefore(wrap, ele);
 wrap.appendChild(ele);
 ele = wrap;
 }
 } while (ele = ele.nextSibling);
 }
 
 /* function b () */
 var box = document.querySelectorAll("td:nth-child(6)");
 for ( var i = 0; i < box.length; i++ ) {
 box [i].style.color = '#ffffff';
 }
}
関連質問

●質問をもっと探す●



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