1

改行のみを含むいくつかの要素を非表示にする Javascript を作成しようとしています。この問題を解決する正しい方法は、これらの要素の作成を停止することだと思いますが、残念ながら、この場合はそれができません。正規表現を使用して不要な要素を検索しようとしていますが、うまくいきません。私が書いた関数は次のとおりです。

function HideEmptyP()
{

    var patt = (\\r)
    for(var i = 0;i<desc[i].length;i++);
    {
    var desc[i] = document.getElementsByClassName('sitspagedesc');
    var result[i] = patt.test(desc[i]);
        if (result[i] == true)
            {
            desc[i].style.display='none';
            }
        else
            {
            alert("No Match!");
            }
    }

Web コンソールに表示されるエラーは、「構文エラー: 不正な文字」です。

これを解決する方法についてのアイデアに感謝します。

前もって感謝します。

4

4 に答える 4

7

改行のみを含むいくつかの要素を非表示にする Javascript を作成しようとしています。

そのための正規表現は必要ありません。要素のinnerHTMLプロパティをと比較するだけです。次に"\\r"例を示します。

if (demo[i].innerHTML === "\\r") {
    // Remove it
}

ただし、ブラウザーによっては、単一のキャリッジ リターンが変換される場合があることに注意してください。"\\r"、 、およびスペースのみを確認することをお勧めし"\\n"ます。そのためには、正規表現を使用することをお勧めします。

正規表現リテラル ( ) は完全に無効です。正しい構文を学ぶためにそれらを読む(\\r)価値があります。JavaScript で正規表現リテラルを記述するには、区切り文字として を使用します。だから:。文字列に、 、またはスペースのみが含まれていることをテストするには、次を使用できます(これには、一致する文字が少なくとも 1 つ必要であり、文字列の開始と文字列の終了を示すために使用されます)://\\r/\r\n/^[\r\n ]+$/^$

if (demo[i].innerHTML.match(/^[\r\n ]+$/) {
    // Remove it
}
于 2012-11-23T10:32:29.340 に答える
1

構文エラーが発生する理由は、宣言 var patt = (\r) が正しくないためです。 var patt = '\r'; のようなものにする必要があります。

また、for ループ全体が間違っています。

その内部ではなく for ループを開始する前に demo を定義する必要があります。結果は配列ではなく、通常の変数である必要があります。

于 2012-11-23T10:42:24.770 に答える
0

あなたのリテラルは奇妙に思えます。

試すvar patt = /\r/;

于 2012-11-23T10:32:21.647 に答える