2015-11-26 193 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