1

私は Javascript の専門家ではありませんが、これは少しおかしいと思い始めています! 基本的に、私はこの関数を書きました:

 function onChange()
 {
      if(this.responseText.length != 0) {

       // Get the new HTML Page requested from the servlet.
       var currentHTML = new XMLSerializer().serializeToString(document);
       var newHTML = this.responseText;

       currentHTML = currentHTML.replace('/\s+/g','');
       currentHTML = currentHTML.replace('/[\n\r]/g','');
       currentHTML = currentHTML.replace('/\t/g','');

       newHTML = newHTML.replace('/\s+/g','');
       newHTML = newHTML.replace('/[\n\r]/g','');
       newHTML = newHTML.replace('/\t/g','');


       // (There's also some alerts here just to get the output)
 }

関数が と の値を取得するcurrentHTMLnewHTML、すべてのスペース、キャリッジ リターン、およびタブを削除するように設計された正規表現メソッドを介して値が渡されます。しかし、これは起こっていません。エラーも障害もありません。通過しても、変数は少しも変更されていません。

4

2 に答える 2

5

正規表現リテラルは引用符で囲まれません。これを変更する必要があります:

currentHTML.replace('/\s+/g','');

これに:

currentHTML.replace(/\s+/g,'');

また、あなたの交換は少し冗長です。\sすでにタブと改行に一致します (スペースも!)。

于 2013-07-04T09:17:44.707 に答える
1

if body を閉め忘れていると思います。

function onChange()

{ if(this.responseText.length != 0) {

   // Get the new HTML Page requested from the servlet.
   var currentHTML = new XMLSerializer().serializeToString(document);
   var newHTML = this.responseText;

   currentHTML = currentHTML.replace('/\s+/g','');
   currentHTML = currentHTML.replace('/[\n\r]/g','');
   currentHTML = currentHTML.replace('/\t/g','');

   newHTML = newHTML.replace('/\s+/g','');
   newHTML = newHTML.replace('/[\n\r]/g','');
   newHTML = newHTML.replace('/\t/g','');

   }
   // (There's also some alerts here just to get the output)

}

于 2013-07-04T09:20:15.713 に答える