2017-05-13 23 views
-1

2天前我開始學習JS。 我下載了一個代數計算器,並將其插入到我的網頁中。下面是完整的代碼:JavaScript:如何從URL獲取函數的數據?

<!doctype html> 
<html> 
    <head> 

    <div style="width:100%;"> 
     <textarea id="output1" name="terminal" rows="4" cols="80" style="width:100%;"></textarea> 
     <input name="execute" value="&#x25B6;" onclick="execute(1);" type="button"> 
    </div> 

    <script src="javascripts/jquery.min.js"></script> 
    <script src="dist/latest-stable/algebrite.bundle-for-browser.js"></script> 
    <script type="text/javascript" language="javascript"> 


    function execute (whichTerminal) { 
     var sandbox = $('sandbox'); 
     var jsResult = $('jsResult'); 
     try { 
      var textToBeExecuted = 'factor(3+3)'; 
      var result; 
      if (/Algebrite\.[a-z]/.test(textToBeExecuted) || /;[ \t]*$/.test(textToBeExecuted)) { 
       result = eval(textToBeExecuted); 
      } 
      else { 
       result = Algebrite.run(textToBeExecuted); 
      } 

      //alert(result); 
      $('#output' + whichTerminal).val(result) 
     } 
     catch (err) { 
      var errDesc = err; 
      errorBox.update('<h4>Error!<\/h4><code>' + errDesc + '<\/code>'); 
      errorBox.show(); 
     } 
    } 

    </script> 

該腳本返回的3 + 3或6(var textToBeExecuted = 'factor(3+3)')主要因素,但我需要的是評估從URL(例如採取表情:/?input=3%B54意味着3 + 4和回報7)。我怎樣才能做到這一點?請幫忙!

+5

也許你應該從簡單的事情開始? – Alex

+0

打開瀏覽器控制檯。 'console.log(location);'你可以看看那個。你毫無疑問需要'location.search' – NewToJS

回答

0

//試試這段代碼。 URL中的參數需要添加爲?表達式= 1 + 1 //也可以按照需求輕鬆調整代碼。

<!DOCTYPE html> 
<html lang = "en"> 
<body> 
<script> 
    var decodedString = decodeURIComponent(window.location.search.split("expression=")[1]); 
    console.log(decodedString); 
    if(decodedString.split('\+').length > 1 && decodedString.split('\+').length < 3){ 
     var exp = decodedString.split('\+'); 
     var result = parseInt(exp[0]) + parseInt(exp[1]); 
     alert(decodedString + " = " + result); 
    } 
    else if(decodedString.split('\-').length > 1 && decodedString.split('\-').length < 3){ 
     var exp = decodedString.split('\-'); 
     var result = parseInt(exp[0]) - parseInt(exp[1]); 
     alert(decodedString + " = " + result); 
    } 
    else if(decodedString.split('\*').length > 1 && decodedString.split('\*').length < 3){ 
     var exp = decodedString.split('\*'); 
     var result = parseInt(exp[0]) * parseInt(exp[1]); 
     alert(decodedString + " = " + result); 
    } 
    else if(decodedString.split('\/').length > 1 && decodedString.split('\/').length < 3){ 
     var exp = decodedString.split('\/'); 
     var result = parseInt(exp[0])/parseInt(exp[1]); 
     alert(decodedString + " = " + result); 
    } 
    else{ 
     console.log("Not a valid operator (Operator Supported : +-*/) found or more than 1 operator found in expression."); 
    } 
    </script> 
</body> 
</html>