.replace在eval中使用javascript中的动态变量?

时间:2016-06-09 13:31:57

标签: javascript variables dynamic eval laravel-5.2

我一直试图解决这个问题几个小时,但是无法让它发挥作用。我正在检索数据库中每个活动的名称,并且每行都会使用正确的数据重新创建此脚本。

<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

1 个答案:

答案 0 :(得分:0)

从服务器端代码输出变量,使用带括号表示法的对象,使用公共类,因此不需要单独选择,或者使变量不在全局范围内。

使变量不在全局范围内

(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);
    }

  });
}());

现在你不必担心数数。