我正在教学生如何编写 JavaScript,因此我在页面上显示了以下内容:
<textarea name="PgmJS">console.log(1);</textarea>
<script id="PgmJS">
</script>
我想做的是:
$('textarea[name=PgmJS]').on('keyup',PgmJSKeyUp);
function PgmJSKeyUp() {
$('#PgmJS').text('function init() {' + $(this).val() + '}');
init();
}
但是浏览器说 init() 没有定义。
最佳答案
这样不行,你需要邪恶eval
:
function PgmJSKeyUp() {
eval($(this).val());
}
您还可以使用Function
, setTimeout
或setInterval
(如果你清除它),它们就像 eval
一样邪恶。与字符串一起使用时。
或者,如果您确实想使用 <script>
元素,
function PgmJSKeyUp() {
var $s = $('<script type="text/javascript">');
$s.text($(this).val());
$('body').append($s);
}
但是请记住<script>
里面的JS代码元素仅在添加到文档时才会执行。
关于javascript - 允许用户更改自己的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20870522/