javascript - 允许用户更改自己的 JavaScript

标签 javascript

我正在教学生如何编写 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 , setTimeoutsetInterval (如果你清除它),它们就像 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/

相关文章:

javascript - 窗口调整信息的 Angular

javascript - 如何渲染通过表单输入添加的数据?

javascript - 如何使用 x-editable 就地编辑 bool 值

javascript - 重复的键值违反唯一约束 - 使用 KnexJS 和 Postgresql

javascript - 从数组中选择所有键为 : name is equal something 的内容

javascript - 嵌套的 Angular 响应式表单和组件重用

asp.net - jQuery 和 ASP.NET - 强制单击按钮

javascript - React-admin 的 dataProvider 是否应该对数据应用格式?

javascript - 使用纯javascript获取 "position: fixed"元素的Y位置

javascript - 需要有关 CSS 的帮助才能正确放置这些元素