运行并将代码显示为文本而不重复

时间:2013-05-24 20:45:01

标签: javascript jquery

我想将javascript代码存储在对象中,然后在用户单击按钮时运行部分代码。到目前为止,我有这个:

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

我有两个问题,第一个问题是,如何让代码实际运行?

第二个是,如果我想在我的javascript中使用一些html,我该怎么办,比如下面一行代码:

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

这对于对象值周围的双引号不会很好。

我的目标是能够在同一页面上运行和显示代码作为文本,而无需编写两次代码,因此如果您有其他建议,那就太棒了。

1 个答案:

答案 0 :(得分: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?')会弹出警告“它是怎么回事?”,alert("See that : \"!")会弹出警告“看到:”!“。