我有以下内容
var id='123';
newDiv.innerHTML = "<a href=\"#\" onclick=\" TestFunction('"+id+"', false);\"></a>";
Run Code Online (Sandbox Code Playgroud)
哪个呈现<a href="#" onclick="return Testfunction('123',false);"></a>在我的HTML中.
我遇到的问题是我希望调用方法TestFunction,并在我的函数StepTwo(string,boolean)中用作字符串参数,理想情况下最终会显示在实时HTML中,如图所示......
<a href="#" onclick="StepTwo("TestFunction('123',false)",true)"></a>
Run Code Online (Sandbox Code Playgroud)
注意TestFunction在这里是一个字符串(它在StepTwo中使用eval执行).
我试图通过以下方式格式化我的JS:
newDiv.innerHTML = "<a href=\"#\" onclick=\"StepTwo(\"TestFunction('"+id+"', false);\",true)\"></a>";
Run Code Online (Sandbox Code Playgroud)
虽然这在我的IDE中看起来是正确的,但在渲染的HTML中,它仍然无法相信.
如果有人能指出我正确的方向,我将不胜感激.谢谢!
我期待在循环中分配对象.我已经读过某些形式的eval(parse(东西,我需要执行此操作,但我遇到错误列表invalid text或no such file or directory.下面是我试图做的一般示例代码:
x <- array(seq(1,18,by=1),dim=c(3,2,3))
for (i in 1:length(x[1,1,])) {
eval(parse(paste(letters[i],"<-mean(x[,,",i,"])",sep="")
}
Run Code Online (Sandbox Code Playgroud)
当我完成使用这些对象时,我想删除它们(实际的对象非常大,以后会导致内存问题......)
for (i in 1:length(x[1,1,])) eval(parse(paste("rm(",letters[i],")",sep="")))
Run Code Online (Sandbox Code Playgroud)
eval(parse(paste(此脚本的两个部分都返回invalid text或的错误no such file or directory.我在使用中遗漏了什么eval(parse(?是否有更简单/更好的方法在循环中分配对象?
我很困惑.这是我的代码:
use strict;
use warnings;
use Test::More;
subtest 'huh?' => sub {
my $i = 0;
eval {
$i++;
} || do {
$i++;
};
is($i, 1, "only execute one branch (i: $i)");
};
&done_testing();
Run Code Online (Sandbox Code Playgroud)
这是我的测试输出(当使用ActivePerl 5.12,Mac OS X运行时):
not ok 1 - only execute one branch (i: 2)
# Failed test 'only execute one branch (i: 2)'
# at test.pl line 14.
# got: '2'
# expected: '1'
1..1
# Looks like you failed 1 test of 1.
not …Run Code Online (Sandbox Code Playgroud) 我需要将数组结构中的数据结构转换为树状结构.在开始处理数据之前,我知道树的深度,但我希望保持灵活性,以便重新使用代码.
因此,我着眼于动态生成subref(从基于Moose的模块中)到阵列之间的想法.像这样(以简化的方式):
use Data::Dump qw/dump/;
sub create_tree_builder {
my $depth = shift;
return eval join '', 'sub { $_[0]->{$_[',
join(']}->{$_[', (1..$depth)),
']} = $_[', $depth + 1 , '] }';
}
my $s = create_tree_builder(5);
my $tree = {};
$s->($tree, qw/one two three four five/, 'a value');
print dump $tree;
# prints
# {
# one => { two => { three => { four => { five => "a value" } } } },
# }
Run Code Online (Sandbox Code Playgroud)
这为我打开了世界,我发现这个eval过程的很酷的用途 - 在参数化生成的字符串中到处都是一个函数(显然,这是一个寻找问题的解决方案). …
是否可以简单地使用此代码...
echo $object->property1;
echo $object->property2;
echo $object->property3;
Run Code Online (Sandbox Code Playgroud)
......用这样的东西,用eval?
for ($i=0; $i<10; $i++)
echo eval("$object->property".$i);
Run Code Online (Sandbox Code Playgroud)
谢谢.
想象一下,我接受用户的一段代码,想要检查给定的字符串是否是有效的JS?仅从语法角度来看.
function checkCode(x){
// Logic
}
// returns a boolean, whether 'x' is syntactically right or wrong.
Run Code Online (Sandbox Code Playgroud)
我不想要解决方案eval,因为当给定的代码'x'在语法错误时整个nodejs进程都会遇到语法错误.
我非常清楚,eval在Python中使用它并不是一个好习惯.这是我的代码:
from hashlib import * # added for clarification
def get_hash(self):
if self.hash_type in ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512']:
data = eval(self.hash_type) # <--- how can I replace this?
Run Code Online (Sandbox Code Playgroud)
我听说过这个setattr功能,但老实说我不知道如何实现它.
是否也可以通过使用该map功能来做到这一点?
请注意,'md5', 'sha1', 'sha224'etc等是局部变量.当我eval在其中一个上使用该功能时,它们就变成了功能.
似乎我永远不会得到'paste0'的返回值,以及任何被引用的字符.我是否必须使用'substr'或'gsub'来删除这些引号?
eval(paste0('1','+','1'))
[1] "1+1"
eval(expression(paste0('1','+','1')))
[1] "1+1"
eval(expression("1+1"))
[1] "1+1"
eval("1+1")
[1] "1+1"
eval(expression(1+1))
[1] 2
eval(1+1)
[1] 2
Run Code Online (Sandbox Code Playgroud) 我试图通过单个变量在非常大的数据表中聚合很多变量.我遇到的问题eval(parse(text=...))是因为我正在评估几个表达式而不仅仅是一个表达式.这是一个简单的例子:
library(data.table)
data(mtcars)
mtcars<-as.data.table(mtcars)
mtcars[,j=list(
eval(parse(text='mean_mpg=mean(mpg),
sum_mpg=sum(mpg)'))
),by=gear]
Error in parse(text = "mean_mpg=mean(mpg),\n sum_mpg=sum(mpg)") :
<text>:1:19: unexpected ','
1: mean_mpg=mean(mpg),
Run Code Online (Sandbox Code Playgroud)
目标:
mtcars[,j=list(
mean_mpg=mean(mpg),
sum_mpg=sum(mpg)
),by=gear]
gear mean_mpg sum_mpg
1: 4 24.53333 294.4
2: 3 16.10667 241.6
3: 5 21.38000 106.9
Run Code Online (Sandbox Code Playgroud)
我将使用它,paste但我认为更容易阅读以这种方式写出来.
非常感谢!
我有一个Perl脚本,可以自动从各种来源下载内容.它会在一个eval块中进行下载,alarm以便在需要太长时间时尝试超时:
eval {
alarm(5);
my $res = $ua->request($req);
$status = $res->is_success;
$rawContent = $res->content;
$httpCode = $res->code;
alarm(0);
};
Run Code Online (Sandbox Code Playgroud)
这已经工作了多年,但在做了一些系统更新后,它突然停止工作.相反,它击中的第一个源超时,我得到以下错误,程序终止:
Alarm clock
Run Code Online (Sandbox Code Playgroud)
我做错了什么,以防止eval突然发出警报?
eval ×10
perl ×3
r ×3
javascript ×2
paste ×2
bioconductor ×1
data.table ×1
escaping ×1
expression ×1
loops ×1
lwp ×1
map ×1
node.js ×1
object ×1
php ×1
python ×1
setattr ×1
syntax ×1