.用 javascript 中的动态变量替换 eval?
.replace in eval with dynamic variables in javascript?
几个小时以来,我一直在尝试修复此问题,但就是无法正常工作。我正在检索数据库中每个 activity 的名称,对于每一行,它都会使用正确的数据重新创建此脚本。
<script>var count = 1;</script>
@foreach($data as $scriptdata)
<script>
eval("var id" + count + " = '{{$scriptdata->activiteit}}';");
eval("var clas" + count + " = '{{$scriptdata->activiteit}}';");
eval("var id" + count + " = id" + count .replace(/[^a-zA-Z]/g, '') + ";");
eval("var clas" + count + " = clas" + count .replace(/[^a-zA-Z]/g, '') + ";");
$("#" + id1).mouseenter(function(event) {
console.log("clicked.");
var target = $('.' + clas1);
if( target.length ) {
$('html, body').animate({
scrollTop: target.offset().top-120
}, 1000);
}
});
count++
</script>
@endforeach
变量毫无问题地变成动态的,我只是无法让 .replace 来完成它的工作。
有人吗?:p
要么从服务器端代码输出变量,使用带括号符号的对象,使用通用 类 这样就不需要单独选择,要么使变量不在全局范围内。
使变量不在全局范围内
(function() {
var id = '{{$scriptdata->activiteit}}';
var clas = '{{$scriptdata->activiteit}}';
$("#" + id).mouseenter(function(event) {
var target = $('.' + clas);
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top - 120
}, 1000);
}
});
}());
现在你不用再为计算而烦恼了。
几个小时以来,我一直在尝试修复此问题,但就是无法正常工作。我正在检索数据库中每个 activity 的名称,对于每一行,它都会使用正确的数据重新创建此脚本。
<script>var count = 1;</script>
@foreach($data as $scriptdata)
<script>
eval("var id" + count + " = '{{$scriptdata->activiteit}}';");
eval("var clas" + count + " = '{{$scriptdata->activiteit}}';");
eval("var id" + count + " = id" + count .replace(/[^a-zA-Z]/g, '') + ";");
eval("var clas" + count + " = clas" + count .replace(/[^a-zA-Z]/g, '') + ";");
$("#" + id1).mouseenter(function(event) {
console.log("clicked.");
var target = $('.' + clas1);
if( target.length ) {
$('html, body').animate({
scrollTop: target.offset().top-120
}, 1000);
}
});
count++
</script>
@endforeach
变量毫无问题地变成动态的,我只是无法让 .replace 来完成它的工作。
有人吗?:p
要么从服务器端代码输出变量,使用带括号符号的对象,使用通用 类 这样就不需要单独选择,要么使变量不在全局范围内。
使变量不在全局范围内
(function() {
var id = '{{$scriptdata->activiteit}}';
var clas = '{{$scriptdata->activiteit}}';
$("#" + id).mouseenter(function(event) {
var target = $('.' + clas);
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top - 120
}, 1000);
}
});
}());
现在你不用再为计算而烦恼了。