1

ちょっと「単純な」テキスト置換の問題が発生しました... HTMLページを取得し、2次元フィールドで簡単に置換したい

関数「createArray」は同様の質問に対する回答から外れていますが、これを機能させることはできません:

<script type="text/javascript">
 function createArray(length) {
    var arr = new Array(length || 0),
        i = length;

    if (arguments.length > 1) {
        var args = Array.prototype.slice.call(arguments, 1);
        while(i--) arr[length-1 - i] = createArray.apply(this, args);
    }

    return arr;
}

window.onload = function(){
    var tabelle = createArray(14, 2);
        tabelle[0][0]="Comment:Header";     tabelle[0][1]="test";
        tabelle[1][0]="Comment:Lane";       tabelle[1][1]=" ";
        tabelle[2][0]="Comment:VS";         tabelle[2][1]=" ";
        tabelle[3][0]="Comment:Early1";     tabelle[3][1]=" ";
        tabelle[4][0]="Comment:Early2";     tabelle[4][1]=" ";
        tabelle[5][0]="Comment:Early3";     tabelle[5][1]=" ";
        tabelle[6][0]="Comment:Mid1";       tabelle[6][1]=" ";
        tabelle[7][0]="Comment:Mid2";       tabelle[7][1]=" ";
        tabelle[8][0]="Comment:Mid3";       tabelle[8][1]=" ";
        tabelle[9][0]="Comment:Late1";      tabelle[9][1]=" ";
        tabelle[10][0]="Comment:Late2";     tabelle[10][1]=" ";
        tabelle[11][0]="Comment:Late3";     tabelle[11][1]=" ";
        tabelle[12][0]="Comment:etc1";      tabelle[12][1]=" ";
        tabelle[13][0]="Comment:etc2";      tabelle[13][1]=" ";
    for (var i = 0; i < tabelle.length; i++)
        document.body.innerHTML = 
        document.body.innerHTML.replace(tabelle[i][0], tabelle[i][1]);
    };
</script>

thx すでに ;D

編集: http://jsfiddle.net/kF7kg/

4

3 に答える 3

0

あなたのコードは私にとってうまく機能します。ページがロードされた後にsrcriptを実行するのを忘れているため、問題は適切です。そのため、まだそこにいないdocument.body.innerHTMLときに電話している可能性があります。document.body

それらを包むことを忘れないでください

window.onload = function() {
   //doing something here
};

これが実際のデモです: http://jsfiddle.net/9aP86/1/

それが役に立てば幸い。

于 2013-04-22T20:46:19.150 に答える
0

私はこれに別の方法でアプローチします。

var replacements = {
        "Comment:Header": "test",
        "Comment:whatever": "test2",
        // etc..
};
window.onload = function(event) {
    for (var key in replacements) {
        if (replacements.hasOwnProperty(key)) {  
            document.body.innerHTML =
               document.body.innerHTML.replace(key, replacements[key]);
        };
    };
};

私は本当に面倒なことをすべて避けたいと思います。あなたがやろうとしていることに対して、はるかに単純で適切なアプローチがあります。そして、それはそのようなものに対処するためのデフォルトの方法でもあります.

  • コードが少ない。
  • はるかに読みやすい。
  • メンテナンスが簡単。
  • 代替品が存在するかどうかを簡単に確認できます ( typeof replacements["Comment:whatever"] !== 'undefined')。O(1)、変換は必要ありません。検索アルゴリズムは必要ありません。
  • JSの奇妙さと無意味な操作はありません。
  • 実行は高速で、パフォーマンスの向上は無視できますが、存在します。
  • 国際化できます。

そして、ここに作業フィドルがあります

于 2013-04-22T23:16:49.727 に答える