0

文字列にスペースがあると、単語がテーブルでラップされます。しかし、innerHTML のスペースを保持したかったので、 '\u00A0' に置き換えました。

var newString = aString.replace(/\s/g,'\u00A0');

newString がテーブルにレンダリングされると、空白を対応する Unicode 文字に置き換えたため、終了しません。

getTableRow(rowIndex).cells(i).innerHTML = myRow[i]; //Here You can replace myRow[i] with newString 

word-wrap CSS プロパティが機能しません。

要するに、\u00A0 を使用して、連続するスペースが単一のスペースに折りたたまれるのを防ぎましたが、実際には改行を防ぎたくありません。

4

3 に答える 3

1

スペースを改行なしスペース ( \u00A0)に置き換える代わりにwhite-space、CSS の要素に : pre-wrap を設定するだけです。ブラウザのサポートは、IE 8 を含め、かなり良好です。

ただし、IE 7 以前もカバーする必要がある場合は、現在のアプローチを使用しますが、連続するスペースのペアの 2 番目のスペースのみを置き換えるようにします。

aString.replace(/\s\s/g,'\u00A0 ')
于 2012-06-26T05:35:03.613 に答える
0

私が正しく理解している場合は、次のタグを挿入して、特定のポイントでテキストを折り返すことができることをブラウザーに伝えることができます。

<wbr>

このタグの詳細については、次のリンクをたどってください: http://www.w3schools.com/html5/tag_wbr.asp

唯一の問題は、IE がこのタグをまだ (IE9 の時点で) サポートしていないことです。

于 2012-06-25T17:15:31.877 に答える
0

私は解決策を見つけました。

空白をブレーキ可能な目に見える Unicode 文字、つまり "\u2009" に置き換えます。それは私にとって完璧に機能しています。

newString = aString.replace(/\s/g,'\u2009');
getTableRow(rowIndex).cells(i).innerHTML = newString;
于 2012-07-03T16:24:16.017 に答える