2015-11-26 138 views
1

我想通过在屏幕上添加单击的跨度值来计算用户定义的公式(基本计算器)。 当我想使用Jquery.GlobalEval进行评估时,似乎没有任何事情发生。为什么Jquery.globalEval不能正常工作?

这里是我的html代码:

<div class="screen"></div> 


     <div class="keys"> 
      <!-- operators and other keys --> 
      <span>7</span> 
      <span>8</span> 
      <span>9</span> 
      <span>+</span> 
      <span>4</span> 
      <span>5</span> 
      <span>6</span> 
      <span>-</span> 
      <span>1</span> 
      <span>2</span> 
      <span>3</span> 
      <span>/</span> 
      <span>0</span> 
      <span>.</span> 
      <span class="eval">=</span> 
      <span>x</span> 
     </div> 
    </div> 

这里是我的jQuery代码:

jQuery(function() { 

    // when C is clicked 
    $(".clear").click(empty); 
    var key; 
    //any of the keys is clicked 
    $(".keys span").not(".eval").click(function() { 

     //====================== 
     if($(this).not(".eval")) { 
      $('.screen').append($(this).html()); 
     } 

     key = $('.screen').text().replace(/x/g, '*').replace('=', ''); 

    }); 


    $(".eval").click(function() { 
     alert(calculate()); 
    }); 

    function empty() { 
     $(".screen").empty(); 
    } 
    function calculate() { 
     jQuery.globalEval("var result = "+ key + ";"); 
    } 
}); 

谢谢

+0

什么是错误讯息?请注意,您的警报将始终显示“未定义”,因为您没有从'calculate()'返回任何内容。 – Teemu

+0

@Teemu它不会给我一个错误消息,我会编辑澄清。它只是没有做任何事情 – abedzantout

+0

@Teemu是它给了我未定义的时候,我把计算中的返回语句。 – abedzantout

回答

1

你需要回到新变量,result。试试这个(结果输出到控制台):

jQuery(function() { 
 

 
    // when C is clicked 
 
    $(".clear").click(empty); 
 
    var key; 
 
    //any of the keys is clicked 
 
    $(".keys span").not(".eval").click(function() { 
 

 
    //====================== 
 
    if ($(this).not(".eval")) { 
 
     $('.screen').append($(this).html()); 
 
    } 
 

 
    key = $('.screen').text().replace(/x/g, '*').replace('=', ''); 
 

 
    }); 
 

 

 
    $(".eval").click(function() { 
 
    console.log(calculate()); 
 
    alert(calculate()); 
 
    }); 
 

 
    function empty() { 
 
    $(".screen").empty(); 
 
    } 
 

 
    function calculate() { 
 
    jQuery.globalEval("var result = " + key + ";"); 
 
    return result; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="screen"></div> 
 

 

 
<div class="keys"> 
 
    <!-- operators and other keys --> 
 
    <span>7</span> 
 
    <span>8</span> 
 
    <span>9</span> 
 
    <span>+</span> 
 
    <span>4</span> 
 
    <span>5</span> 
 
    <span>6</span> 
 
    <span>-</span> 
 
    <span>1</span> 
 
    <span>2</span> 
 
    <span>3</span> 
 
    <span>/</span> 
 
    <span>0</span> 
 
    <span>.</span> 
 
    <span class="eval">=</span> 
 
    <span>x</span> 
 
</div> 
 
</div>

+0

你在哪里申报结果? – abedzantout

+0

结果在'jQuery.globalEval(“var result =”+ key +“;”);'中声明。 – Makaze

+0

完美地工作,谢谢 – abedzantout