0

JavaScript コードをオブジェクトに保存し、ユーザーがボタンをクリックしたときにその一部を実行したいと考えています。これまでのところ、私はこれを持っています:

var exampleCode = {
    test: "$('body').css('background: pink');"
}
$(document).ready(function(){
    console.log(exampleCode.test);
    exampleCode.test;
});

2 つの質問があります。1 つ目は、コードを実際に実行する方法です。

2 つ目は、次のコード行のように、javascript に html を含めたい場合はどうすればよいかということです。

$('body').append('<div class="whatever"></div>');

これは、オブジェクト値を二重引用符で囲むとうまくいきません。

これらすべての私の目標は、コードを 2 回記述せずに、同じページでコードを実行してテキストとして表示できるようにすることです。他の提案があれば、それは素晴らしいことです。

4

1 に答える 1

6

「コードの文字列」を実際に実行することはできないため、コードを実行する唯一の方法はこれを実行することです:

var exampleCode = {
    test: function(){$('body').css('background', 'pink');}
}
$(document).ready(function(){
    console.log(exampleCode.test); //No "()" for the function
    exampleCode.test();
});

関数をオブジェクトに保存し、それを呼び出します。

関数のテキストを追加したい場合は、これを行うことができます:

$('body').append(String(exampleCode.test))

これにより関数が追加されますが、フォーマットはありません

ただし、javascript 関数.replace()を使用して、少し書式設定を行うことができます。

//Really weak example, can be optimised
var txtCode = String(exampleCode.test)
txtCode = txtCode.replace(';', ';<br/>')
txtCode = txtCode.replace('{', '{<br/>')
txtCode = txtCode.replace('}', '}<br/>')
var code = $('<code/>').html(txtCode)
$('body').append(code)

追加情報:「\」で文字をエスケープできます。

alert('How\'s it?')実行すると、アラート「How 's it?alert("See that : \"!")がポップされ、アラート「See that :」がポップされます。"。

于 2013-05-24T20:49:45.590 に答える