如何评估或解析作为.val值引入的jQuery代码?

问题描述

| 我遇到一种情况,我希望允许我的软件的用户能够将一些jquery代码粘贴到textarea中,然后单击按钮以触发.change事件函数。 在此函数中,将基于该textarea的.val创建一个var。然后在函数中使用此var操作某些CSS。 一切正常,除了var在将.val插入硬编码时的行为完全不同的事实。换句话说,如果我要硬编码: var test_var = new Array(3)
for (i=0; i <3; i++)
test[i]=new Array(3)

test[0][1] = \"option-1\"
test[0][2] = \"option-1-value\"

test[1][1] = \"option-2\"
test[1][2] = \"option-2-value\"

test[2][1] = \"option-3\"
test[2][2] = \"optoin-3-value\"
然后它将执行函数中的数组代码。 但是如果我要说: var test_var = $(\'#textarea-content \')。val(); 然后将上述确切的数组代码粘贴到textarea中,然后var text_var成为文本(而不是成为执行的代码)。 我已经通过执行alert(text_var)测试了这一点,很明显,当对var进行硬编码时,它作为已执行的代码返回,但是当var将textarea的.val()拉入时,\只是文字,未执行。 因此,它将硬编码版本视为代码,并将.val()版本视为纯文本。 使用PHP时,我会做类似eval(test_var);的操作。将其视为可执行代码,而不仅仅是纯文本,我知道eval存在于javascript中,但是我似乎无法获得它来解决我的问题。 因此,如果其中任何一个有道理,并且您有可能的解决方案,我都希望听到。 谢谢! :) 埃里克     

解决方法

除了一般的“ 1”罪恶和随之而来的滥用之外,这应该可以正常工作(假设用户的代码返回单个值):
var test_val = eval($(\'#textarea-content\').val());
http://jsfiddle.net/mattball/JDhmb/     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...