2015-07-06 22 views
8

Tôi đang tạo một máy tính jquery, bằng cách nhấp vào các nút đại diện cho các số và toán tử trên máy tính, innerHTML của màn hình sẽ thay đổi để phản ánh các nút được nhấp.Tạo một máy tính JQuery, thay đổi innerHTML nhưng không có gì đang xảy ra

Dưới đây là mã của tôi:

<!doctype html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
    <title> JQuery Calculator </title> 
    </head> 
<body> 

<style> 

    section { 
     padding: 2em; 
    } 

    .display { 
     height: 5em; 
     color: #333; 
    } 


</style> 

    <section id="calculator"> 
     <div class="display"> 

     </div> 

     <div id="numbersContainer"> 
      <table id="numbers"> 
       <tr> 
        <td> 
         <button class="number" id="one">1</button> 
        </td> 
        <td>  
         <button class="number" id="two">2</button> 
        </td> 
        <td> 
         <button class="number" id="three">3</button> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <button class="number" id="four">4</button> 
        </td> 
        <td>  
         <button class="number" id="five">5</button> 
        </td> 
        <td> 
         <button class="number" id="six">6</button> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <button class="number" id="seven">7</button> 
        </td> 
        <td>  
         <button class="number" id="eight">8</button> 
        </td> 
        <td> 
         <button class="number" id="nine">9</button> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <button class="number" id="zero">0</button> 
        </td> 
       </tr> 
      </table> 
      <table id="operators"> 
       <tr> 
        <td> 
         <button class="operator" id="plus">+</button> 
        </td> 
        <td>  
         <button class="operator" id="minus">-</button> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <button class="operator" id="divide">/</button> 
        </td> 
        <td> 
         <button class="operator" id="times">x</button> 
        </td> 
       </tr> 
      </table> 
     </div> 


    </section> 

    <script> 


     var storedCalculation; 

     $('.number, .operator').click(function() { 
      var numberOrOperator = event.target.innerHTML; 
      storedCalculation+=numberOrOperator; 
     }); 

     var calcScreen = $('.display').innerHTML; 
     calcScreen = storedCalculation; 


    </script> 

</body> 
</html> 

và đây là jsfiddle của nó: http://jsfiddle.net/ynf2qvqw/

Tại sao innerHTML của lớp hiển thị không thay đổi?

+0

FYI, các phần tử nút của bạn không chứa HTML, vì vậy bạn không nên sử dụng 'innerHTML'. Chúng chỉ có văn bản, vì vậy sẽ an toàn hơn khi sử dụng nội dung văn bản, có thể thông qua '$ (event.target) .text()'. –

+0

thử http://codepen.io/mariusbalaj/pen/bGqhI – Hiero

Trả lời

8

http://jsfiddle.net/blaird/ynf2qvqw/2/

 var storedCalculation = ''; 

     $('.number, .operator').click(function() { 
      var numberOrOperator = $(this).html(); 
      storedCalculation += numberOrOperator; 
      $('.display').html(storedCalculation); 
     }); 

Bạn đang sử dụng innerHTML không chính xác và bạn đang cố gắng để thiết lập giá trị của mình bên ngoài chức năng nhấp chuột.

6

Đối tượng jQuery không có thuộc tính innerHTML như HTML HTMLElements gốc. Để sửa đổi HTML bên trong một đối tượng jQuery, bạn phải sử dụng phương pháp html(), như vậy:

$('.display').html(storedCalculation); 

Xem http://api.jquery.com/html/ để biết thêm thông tin.

2

innerHTML không phải là tài sản của jQuery. Bạn có thể thiết lập các innerHTML bởi grabbing DOMElement từ chọn của bạn:

$('.display').get(0).innerHTML = storedCalculation; 

hoặc bạn có thể sử dụng .html jQuery () phương pháp:

$('.display').html(storedCalculation) 
+0

'$ ('. Display'). Get (0)' chính thức hơn '$ ('. Display') [0]'. –

+0

Đồng ý, đọc sạch hơn. Đã cập nhật mẫu mã. –

0

Trước tiên, bạn cần phải thiết lập các storedCalculation biến thành giá trị ban đầu để nó hoạt động tốt hơn nói chung, nếu không giá trị ban đầu sẽ là "không xác định".

var storedCalculation = ""; 

Các bit tiếp theo vẫn không thay đổi gì:

 $('.number, .operator').click(function() { 
      var numberOrOperator = event.target.innerHTML; 
      storedCalculation+=numberOrOperator; 

Ở đây, bạn sử dụng phương pháp jQuery html(). Paramter là giá trị bạn muốn thiết lập, trong trường hợp của bạn được lưu trữCalculation.

  var calcScreen = $('#display1').html(storedCalculation); 
     }); 

Hy vọng tôi có thể trợ giúp!

Các vấn đề liên quan