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';
}}

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

回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント200pt

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';
    }
}

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

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

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

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

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