2016-07-30 32 views
2

我在外部java腳本文件中有一個函數,我不知道如何調用並返回我的函數在文本中正確返回的值。當我點擊下單順序時,我希望通過我的函數計算值,然後在排序框下方顯示最終值。如果我什麼都沒輸入,我可以讓我的函數提醒,但是我無法讓它返回我的最終值 - 我做錯了什麼?如何從外部javascript函數返回值

function sum2() 
 
{ 
 
     var one = document.getElementById("book_1").value; 
 
     var two = document.getElementById("book_2").value; 
 
     var three = document.getElementById("book_3").value; 
 

 
     if ((one == "")||(two == "")||(three == "")) 
 
     { 
 
     alert ('Error', 'values missing'); 
 
     } 
 
     else 
 
     { 
 
     var sum1 = one * 19.99; 
 
     var sum2 = two * 86.00; 
 
     var sum3 = three * 55.00; 
 
     var sum = sum1 + sum2 + sum3; 
 

 
     document.getElementById('output').value = sum; 
 
     document.write(sum); 
 
}
<?xml version="1.0" encoding="utf-8"?> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
    <head> 
 
    <title>Work</title> 
 
    <script type="text/javascript" src="ex4.js"></script> 
 
    </head> 
 
    <body> 
 
    <div id="container"> 
 
    <h2>Order Books Online</h2> 
 
    <form action="" method="post" id=」frm」> 
 
     <fieldset> 
 
     <table border="0"> 
 
     <tr> 
 
      <th>Book</th> 
 
      <th>Quantity</th> 
 
      <th>Price</th> 
 
     </tr> 
 
     <tr> 
 
      <td>Basics of C++</td> 
 
      <td><input type="text" size="3" id="book_1" /></td> 
 
      <td>$19.99</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Program Development in Perl</td> 
 
      <td><input type="text" size="3" id="book_2" /></td> 
 
      <td>$86.00</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Advanced JavaScript</td> 
 
      <td><input type="text" size="3" id="book_3" /></td> 
 
      <td>$55.00</td> 
 
     </tr> 
 
     </table> 
 
     <br /><br /> 
 
     <input type="submit" onclick="sum2(); return false;" value="Place Order" id="sub" /> 
 
     </fieldset> 
 
     </form> 
 
    </div> 
 
    </body> 
 
</html>

回答

3

試試這個,它的工作,輸出最後顯示的。

function sum2() 
 
{ 
 
     var one = document.getElementById("book_1").value; 
 
     var two = document.getElementById("book_2").value; 
 
     var three = document.getElementById("book_3").value; 
 

 
     if ((one == "")||(two == "")||(three == "")) 
 
     { 
 
     alert ('Error', 'values missing'); 
 
     } 
 
     else 
 
     { 
 
     var sum1 = one * 19.99; 
 
     var sum2 = two * 86.00; 
 
     var sum3 = three * 55.00; 
 
     var sum = sum1 + sum2 + sum3; 
 

 
     document.getElementById('output').innerHTML = sum; 
 
     // document.write(sum); 
 
     } 
 
}
<?xml version="1.0" encoding="utf-8"?> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
    <head> 
 
    <title>Work</title> 
 
    <script type="text/javascript" src="ex4.js"></script> 
 
    </head> 
 
    <body> 
 
    <div id="container"> 
 
    <h2>Order Books Online</h2> 
 
    <form action="" method="post" id=」frm」> 
 
     <fieldset> 
 
     <table border="0"> 
 
     <tr> 
 
      <th>Book</th> 
 
      <th>Quantity</th> 
 
      <th>Price</th> 
 
     </tr> 
 
     <tr> 
 
      <td>Basics of C++</td> 
 
      <td><input type="text" size="3" id="book_1" /></td> 
 
      <td>$19.99</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Program Development in Perl</td> 
 
      <td><input type="text" size="3" id="book_2" /></td> 
 
      <td>$86.00</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Advanced JavaScript</td> 
 
      <td><input type="text" size="3" id="book_3" /></td> 
 
      <td>$55.00</td> 
 
     </tr> 
 
     </table> 
 
     <br /><br /> 
 
     <input type="submit" onclick="sum2(); return false;" value="Place Order" id="sub" /> 
 
     </fieldset> 
 
     </form> 
 
    </div> 
 
    <div id="output"></div> 
 
    </body> 
 
</html>

+0

這是我想要的,除了我不想要一個提示框來顯示結果,只在文本的正下方按鈕 – lucyb

+0

提示框被刪除,現在檢查它 –

+2

是的,這就是它,謝謝! – lucyb

2

採用document.write()似乎並不爲你在這裏想要什麼。 (而且,說實話,應在一般避免反正。)

然而,這做你想要什麼:

document.getElementById('output').value = sum; 

所有你需要的是有一個HTML input元素id(這你HTML當前缺失):

<input type="text" id="output" /> 

(另外,你的JavaScript缺少結束},這是一個語法錯誤)

一旦你有了這個HTML元素並刪除了document.write()調用,這應該是正確輸出值。


如果要輸出到比其它input元素以外的東西,那麼你就不會使用.value但更多的東西一樣.innerHTML代替:

document.getElementById('output').innerHTML = sum; 

有一個元件,如:

<span id="output"></span> 

作爲旁邊關於ter神學,這不是「返回」功能的價值。 「返回」在涉及函數時具有非常明確的含義,即函數本身使用關鍵字return生成一個值,並將該值返回到調用該函數的代碼。

此函數正在向HTML寫入值,但它不返回任何內容。

+1

感謝您的評論 – lucyb