如何将字符串转换为函数?

时间:2013-08-07 02:34:48

标签: javascript jquery

FIDDle!如何运行存储在html中的脚本?我不想把它从功能中拿出来......

HTML:

<script type="hbrData">
function(){
    var x = 22;
    alert('hi');
}
</script>

JS:

var script = $('script[type="hbrData"]').text();

$('body').append(script);

script();                  // Uncaught TypeError: string is not a function 

4 个答案:

答案 0 :(得分:1)

如果您有充分理由这样做,请使用eval

var script = $('script[type="hbrData"]').text();

eval('(' + script + ')')();

答案 1 :(得分:1)

在html中为函数命名,你可以从javascript调用它:

<强> HTML

<script>
function HelloWorld() {
    var x = 22;
    alert('hi');
}
</script>

<强>的Javascript

HelloWorld();

<强> Demo

答案 2 :(得分:0)

$.globalEval("("+script+")()");

答案 3 :(得分:0)

你可以这样做

HTML:

<script type="hbrData">
    var x = 22;
    alert('hi');
</script>

JS:

var script = $('script[type="hbrData"]').text();
var fn = new Function (script) ;
fn() ;

这样可以避免使用eval

请注意,我已将HTML从匿名函数定义更改为仅两行脚本。不知道你是否愿意这样做。