0

javascript でタグを閉じようとしていますが、ドキュメントに書き込むときにスラッシュが常にありません。バックスラッシュ( "\/" )を前に付けてみましたが、うまくいくようです。私<pre>はページのソースを見続けています。コードは次のとおりです。

var temp_index = 0,
    line_count = 0;
while (temp_index < text.length) {
    if ((text.charAt(temp_index) == "\n") && (line != line_count)) {
        if (line_count < line) line_count++;
        if (line_count == line) {
            text = text.substring(0, temp_index) + "<pre id='line'>" + text.substring(temp_index);
            temp_index++;
            while ((text.charAt(temp_index) != "\n") && (temp_index < text.length)) temp_index++;
            text = text.substring(0, temp_index - 1) + "<\pre>" + text.substring(temp_index);
        }
    }
    temp_index++;
}
return text;

私は得ることを期待しています:

Heres's the last line
<pre id='line'>Here's the current line</pre>
Here's the next line
Here's the final line

しかし、私は得ています:

Here's the last line
<pre id='line'>Here's the current line
Here's the next line
Here's the final line</pre>

行末の \n をタグに置き換えることで簡単に修正できました。この問題は修正されますが、キーボード入力でバグが発生します。これが更新されたコードです。

if (line_count == line) {
    text = text.substring(0, temp_index) + "<pre id=\"line\">" + text.substring(temp_index);
    temp_index++;
    while ((text.charAt(temp_index) != "\n") && (temp_index < text.length)) temp_index++;
    text = text.substring(0, temp_index - 1) + "</pre>" + text.substring(temp_index);
    break;
}
4

1 に答える 1

1

このコードは構文的に正しいです。ループの外側を初期化temp_indextext、省略します。break

temp_index = 0;
text = "this is \n a test \n of some info";

text =  text.substring( 0, temp_index )
     + "<pre id=\"line\">"
     + text.substring( temp_index );

temp_index++;

while( ( text.charAt( temp_index ) != "\n" ) && ( temp_index < text.length ) ) temp_index++;

text = text.substring( 0, temp_index - 1 )
     + "</pre>"
     + text.substring( temp_index - 1 );

alert(text);

結果は

<pre id="line">this is</pre> 
 a test 
 of some info

を使用replaceして現在の行を書き換えて、上記と同じ結果を取得することもできます。

text = "this is \n a test \n of some info";
text = text.replace(/(.+?)\n/, "<pre id=\"line\">$1</pre>\n"); 

現在の行を知っていて、それを先頭に<pre id=\"line\">追加して追加し</preたい場合は、 and を使用split()join()ます。

// update line 2
line = 2;

// sample text
text = "this is\n"+
       "a test\n"+
       "of some info";

// split to an array on newlines
vals = text.split("\n");

// replace the second line, which has an index of 1 (or line-1)
vals[line-1] = "<pre id=\"line\">" + vals[line-1] + "</pre>";

// join back to an array using newlines
text = vals.join("\n");

結果:

this is
<pre id="line">a test</pre>
of some info
于 2013-04-01T07:44:29.720 に答える