.用 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);
    }

  });
}());

现在你不用再为计算而烦恼了。