30/09/2018, 18:38
Mọi người sửa giúp mình đoạn js tính tiền
Mọi người ơi. mình đang làm form tính hóa đơn như hình:
mình chọn được món bên form tìm kiếm sang form hóa đơn được. Và tính được thành tiền ở dòng thứ 1 như sang dòng thứ 2 thì không tự tính được. mong mọi người giúp mình.
<script type="text/javascript">
$(".them").click(function(){
var mamon = $(this).parent().parent().children("td").eq(0).html();
var tenmon = $(this).parent().parent().children("td").eq(1).html();
var dongiamon = $(this).parent().parent().children("td").eq(2).html();
$(".dsmon").append(
'<tr>'+
'<td width="37"></td>'+
'<td width="68"><input type = "text" name = "mamon" value = " '+mamon+'"size = "3"/> </td>'+
'<td width="176"><input type = "text" name = "tenmon" value ="'+tenmon+'"size = "15"/></td>'+
'<td width="83"><input type="text" id = "dongia" value ="'+dongiamon+'"/></td>'+
'<td width="45"><input type="text" id= "soluong" onkeyup="tinh();" size = "3"/></td>'+
'<td width="68"><input type="text" name = "result" id ="result"/></td>'+
'<td width="38"></td>'+
'<td width="38"></td>'+
'</tr>'
);
});
function tinh()
{
var dongia = document.getElementById("dongia");
var soluong = document.getElementById("soluong");
var result = document.getElementById("result");
var tong = dongia.value * soluong.value;
if (!isNaN(tong))
{
result.value = tong;
}
}
</script>
indent preformatted text by 4 spaces
Bài liên quan
mọi lần chạy nút thêm thì sẽ thêm 1 id giống như trên.
Em làm như vậy thì js làm sao biết được id của dòng nào.
Dòng 1 chạy được vì chỉ có 1 id dongia, soluong, result.
Qua dòng 2 thì js không biết id nào nên gây lỗi.
Em dùng firebug trên trình duyệt firefox hoặc chrome để đi bug js nhé.
Mong a nói rõ hơn cho em được hk a.? Tại vì em cũng còn yếu js này lắm a.
javascript(js) dựa vào DOM (Document Object Model) để thao tác trên HTML.
js muốn thao tác trên tag HTML nào thì phải biết id hoặc là name để thao tác.
Như anh nói ở comment trước.
id: dongia, soluong, result đã giống nhau ở dòng thứ 2. Thì js sẽ không biết là tag hmtl nào để thao tác.
Em tìm hiểu thêm về công cụ firebug để debug trên javascript
cái công cụ đó là hiện là hiện lỗi trong javascript. Em hiểu anh nói là trùng id. Nhưng em không biết sửa như thế nào nên mới lên trang này hỏi á. mong a giúp em sửa lỗi này á
anh thêm biến index để phân biệt dòng trước với dòng sau.
Code có thể không đúng. Em chạy, sai thì sửa lại 1 chút.
Đúng như a nói là nó hk đúng. Nhưng thật sự em hk bik sửa lại sao nữa a ơi
anh đã sửa code ở trên lại rồi.
Anh nói ý tưởng để em nắm và sửa lại.
Giờ anh thêm 1 biến index, bắt đầu từ 0.
Mục đích của biến này giúp cho id dễ phân biệt và tăng 1 đơn vị mỗi khi nhấn nút thêm.
ví dụ: index =0 thì dòng đầu tiên sẽ có id là dongia0, soluong0, result0. Và index sẽ tăng 1 đơn vị. Giờ là index =1
Khi nhấn vào button thêm thì sẽ add thêm 1 dòng với id là dongia1, soluong1, result1. Và index sẽ tăng lên 2.
Em chịu khó chạy debug javasript đi. sẽ hiểu cái anh nói nãy giờ.
Phần hướng dẫn của bác @masoivn mình hơi khó hiểu nên viết một code khác theo cách của mình…
Phần HTML
Còn đây là phần JavaScript
Nếu dài quá làm biếng đọc thì bác vào đây mà down về ngâm cứu
MediaFire
demo-table.rar
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
a ơi, sao mà em chèn thêm đoạn ajax để khi mà bấm loại món thì ajax sẽ load món ra bên bảng Danh mục món ăn.
Khi em vô thì bảng danh món trong hóa đơn em bấm chọn nó không qua…
bảng tìm kiếm và ds món trong hóa đơn này em đều để trên 1 file là index…Còn bên bảng tìm kiếm khi load sẽ hiện bảng ds món ăn thì bảng ds món này em để ở 1 file riêng là ajax. Có thể tại vì vậy nên không chạy đc js bảng kia. Nhưng em không biết gộp chung lại được.