0

私は変数を持っています:

    var remoteControlPage = '
        <table>
            <tr>
                <td class="stats">sadfsadf</td>
            </tr>
        </table>
    ';

そして私はそれを次のようなJquery関数で使用したいと思います.html

    $("div.devices div.devicePage").html(remoteControlPage);

問題は、新しいコンテンツが単一行にない限り、html関数が機能しないことです。そして、これはhtmlを書くときに望ましくありません。

だから私はとにかくvar remoteControlPage単一行の変数に変換することができるかどうか疑問に思いましたか?

ありがとう

4

5 に答える 5

3

この問題は単独に限定されるものではありません.html()。むしろ、JSは何らかの支援なしに複数行の文字列をサポートしません。

これを処理するために利用できる多くのテンプレートソリューションがありますが、一般的な純粋なJSソリューションの1つはjoin、文字列の配列に対するものです。

var remoteControlPage = [
    '<table>',
      '<tr>',
        '<td class="stats">sadfsadf</td>',
      '</tr>',
    '</table>'
].join('');
于 2012-09-05T02:25:23.930 に答える
2

JSでは、これらの文字列を次のように適切に連結する必要があります。

var remoteControlPage = 
    '<table>'
      +'<tr>'
        +'<td class="stats">sadfsadf</td>'
      +'</tr>'
    +'</table>';
于 2012-09-05T02:27:12.867 に答える
2

次のような変数を定義することはできません。

var remoteControlPage = '
    <table>
        <tr>
            <td class="stats">sadfsadf</td>
        </tr>
    </table>
';

いずれにせよ、ユーザーがテキストで埋めるテキストエリアを持つことができます

<table>
    <tr>
        <td class="stats">sadfsadf</td>
    </tr>
</table>

そして、あなたはそれを手に入れます:

var remoteControlPage = mytextarea.value;

しかし、それを行うと、テキストは次のように変更されます

var remoteControlPage = "<table>\n    <tr>\n        <td class=\"stats\">sadfsadf</td>\n    </tr>\n</table>"

次に、改行を削除したい場合は、次のことができます。

remoteControlPage = remoteControlPage.replace(/\s*\n\s*/g,"")

しかし、あなたはそれを必要としません。ユーザーがHTMLを作成すると言う場合は、、<textarea>...を使用できます。

<textarea id="txt">
<table>
    <tr>
        <td class="stats">Cell 1</td>
        <td class="stats">Cell 2</td>
    </tr>
</table>
</textarea>

...ボタン、 ...

<button id="button">Click me!</button>

...および出力HTMLビューア:

<div id="output">Here will go the output</div>

そして、あなたはただ必要です

$('#button').click(function(){
    $('#output').html($('#txt').val());
});

デモ:http://jsfiddle.net/bYsTy/6/

于 2012-09-05T03:00:05.897 に答える
0

を交換する必要があり\nます。

remoteControlPage = remoteControlPage.replace(/\n/g, '');
console.log(remoteControlPage);
// output: "<table>        <tbody><tr>            <td class="stats">sadfsadf</td>        </tr>    </tbody></table>"

または、空白が不要な場合は、以下を使用して空白regexを削除できます。
/\n|\s(?![^\s]*<\/td>)/g

説明

  • \s:空白に一致
  • |\n:またはのいずれかに一致するために使用されます\s
  • [^\s]:空白以外のすべてに一致します
  • <\/td>:終わりまたはあなたのtd
  • *:前の要素と0回以上一致する
  • \s(?![^\s]*<\/td>):空白に一致するのは、その後に末尾が続くスペースではないものが続く場合のみです。td

したがって、コードは次のようになります。

remoteControlPage.replace(/\n|\s(?![^\s]+<\/td>)/g, '');
console.log(remoteControlPage);
// output: <table><tbody><tr><tdclass="stats">sadfsadf</td></tr></tbody></table>

:内の空白は削除されませんtd.stats

デモ

于 2012-09-05T02:42:02.050 に答える
0

HTMLはローカルストレージにあるとおっしゃっていたので、JS変数を使用せず、ストレージから直接設定してください。

 $("div.devices div.devicePage").html(localStorage["bar"]);
于 2012-09-05T03:07:29.620 に答える