javascript - dynamic variables

前端 未结 2 503
甜味超标
甜味超标 2020-12-02 03:02

Hi I am trying to make dynamic variables but it is saying `variable v0 (through to v5) is not defined.

td.each(function(i){
eval(\'var v\' + i + \' = \\\'\'          


        
相关标签:
2条回答
  • 2020-12-02 03:24

    That sounds like a bad idea.

    Is there any reason you can't do this?

    var tdHtml = td.map(function() { return $(this).html(); }).get();
    
    0 讨论(0)
  • 2020-12-02 03:24

    Oh my.

    If you want to create a global "dynamic variable" you should not use var. In this context it creates a variable that is local inside of the each-function, which is quite useless (and will cause it to be undefined outside of the loop, which is what you're experiencing). Instead you should do it like this:

    td.each(function(i){
      window['v' + i] = $(this).html();
    });
    

    The downside with the above code is that global variables are not really great either.

    On the other hand, if you want a local variable (if for example there will be more code in the loop that uses this varaible, then I would do it like this:

    td.each(function(i){
      var dynVars = {};
      dynVars['v' + i] = $(this).html();
    
      alert(dynVars.v4); // use the dynamic variables by saying "dynVars.NAME"
    
    });
    

    You could combine these two solutions, by putting the declaration of dynvars (var dynVars = {}) in the scope where you want to be able to access your variables instead. As long as it is also visible in this each-callback, everything will work out fine.

    0 讨论(0)
提交回复
热议问题