允许用户更改自己的JavaScript

允许用户更改自己的JavaScript,javascript,Javascript,我正在教学生如何编写JavaScript,因此我在页面上有以下内容: <textarea name="PgmJS">console.log(1);</textarea> <script id="PgmJS"> </script> 但是浏览器说init()没有定义。这是因为您在textarea的text属性中指定init函数,默认情况下,浏览器的JS编译器不会获取该属性 您需要将init函数定义为普通JS代码,并在其中执行自定义JS代码。我闻到一个

我正在教学生如何编写JavaScript,因此我在页面上有以下内容:

<textarea name="PgmJS">console.log(1);</textarea>
<script id="PgmJS">
</script>

但是浏览器说init()没有定义。

这是因为您在textarea的text属性中指定init函数,默认情况下,浏览器的JS编译器不会获取该属性


您需要将init函数定义为普通JS代码,并在其中执行自定义JS代码。我闻到一个eval()的气味(啊!):|

它不是这样工作的,你需要邪恶的
eval

function PgmJSKeyUp() {
    eval($(this).val());
}
您还可以使用
函数
设置超时
设置间隔
(如果您清除它),当与字符串一起使用时,它们与
eval
一样有害。 或者,如果您确实想使用
元素

function PgmJSKeyUp() {
    var $s = $('<script type="text/javascript">');
    $s.text($(this).val());
    $('body').append($s);
}
函数PgmJSKeyUp(){ var$s=$(''); $s.text($(this.val()); $('body')。追加($s); }
但是请记住,
元素中的JS代码只有在添加到文档中时才会执行。

您是在哪里定义的?您所做的只是设置某个文本区域的文本。为什么不干脆
eval()
it?或者使用
var init=new函数(this.value)
元素不会撤消或停止其代码。如果要停止
设置间隔
,则需要
清除间隔
function PgmJSKeyUp() {
    var $s = $('<script type="text/javascript">');
    $s.text($(this).val());
    $('body').append($s);
}