#javascript #function
#javascript #функция
Вопрос:
Я новичок в javascript, самостоятельно пишу некоторый код, используя технику DOM. Мой первый блок кода работает правильно, и он дает мне сумму для первых двух полей ввода, но я не получил сумму при вводе значений 2-го блока кода. вот мой код
<body>
<script language ="javascript">
function Calculate(){
var pricee = document.getElementById('price').value;
var qtyy = document.getElementById('qty').value;
var sum = pricee * qtyy;
document.getElementById('total').value = sum;
var newprice = document.getElementById('price2').value;
var newqty = document.getElementById('qty2').value;
var sum2 = newprice * newqty;
document.getElementById('total2').value = sum2;
}
</script>
<form>
Product Name: <input type="text" id="name" name="productName">
<br>
Product Price: <input type="text" id="price" name="productPrice">
<br>
Product Qty: <input type="text" id="qty" name="productQty" type="text" id="total" name="producttotal"
onChange="Calculate()">
<br>
Total: <input type="text" id="total" name="producttotal">
<hr>
Product Name: <input type="text" id="name2" name="productName">
<br>
Product Price: <input type="text" id="price2" name="productPrice">
<br>
Product Qty: <input type="text" id="qty2" name="productQty" type="text" id="total" name="producttotal"
onChange="Calculate()">
<br>
Total: <input type="text" id="total2" name="producttotal">
</form>
Комментарии:
1. Есть ли какая-либо причина для того, чтобы sum была продуктом ?… Кроме того, у вас есть два входных файла с одинаковым идентификатором, которые являются входными данными для количества продуктов. измените их на уникальные идентификаторы.
2. извините, я не понял?
3. Идентификаторы отличаются для обоих входных данных, таких как ‘price’ ‘qty’ и ‘price2’ и ‘qty2’
4. Вы уверены?
<input type="text" id="qty" name="productQty" type="text" id="total" name="producttotal" onChange="Calculate()">
🙂5. Спасибо Brioshje .. за помощь .. работает
Ответ №1:
В вашем коде есть две основные проблемы:
- Ваши типы ввода — это текст, поэтому их значение обрабатывается как текст. Вместо этого вам следует преобразовать эти значения в числа, прежде чем выполнять с ними математические операции.
- Ваши входные данные «Кол-во» имеют несколько
id
иname
иtype
. Вероятно, это ошибка копирования-вставки.
Чтобы исправить пункт 1, вы можете добавить приведение к числу, используя унарный оператор ( ) следующим образом:
function Calculate(){
var pricee = document.getElementById('price').value;
var qtyy = document.getElementById('qty').value;
var sum = pricee * qtyy;
document.getElementById('total').value = sum;
var newprice = document.getElementById('price2').value;
var newqty = document.getElementById('qty2').value;
var sum2 = newprice * newqty;
document.getElementById('total2').value = sum2;
}
Чтобы исправить пункт 2, вам просто нужно удалить дополнительные теги из ваших входных данных:
Первое:
Product Qty: <input type="text" id="qty" name="productQty" type="text" id="total" name="producttotal"
onChange="Calculate()">
должно стать таким:
Product Qty: <input type="text" id="qty" name="productQty" onChange="Calculate()">
И второе должно следовать тому же правилу.
Кроме того, вы должны добавлять onChange
событие при каждом вводе, касающемся вычисления.
Полный рабочий код:
HTML:
Product Name: <input type="text" id="name" name="productName">
<br>
Product Price: <input type="text" id="price" onChange="Calculate()" name="productPrice">
<br>
Product Qty: <input type="text" id="qty" name="productQty" onChange="Calculate()">
<br>
Total: <input type="text" id="total" name="producttotal">
<hr>
Product Name: <input type="text" id="name2" name="productName">
<br>
Product Price: <input type="text" id="price2" onChange="Calculate()" name="productPrice">
<br>
Product Qty: <input type="text" id="qty2" onChange="Calculate()" name="productQty"
onChange="Calculate()">
<br>
Total: <input type="text" id="total2" name="producttotal">
Javascript:
function Calculate(){
var pricee = document.getElementById('price').value;
var qtyy = document.getElementById('qty').value;
var sum = pricee * qtyy;
document.getElementById('total').value = sum;
var newprice = document.getElementById('price2').value;
var newqty = document.getElementById('qty2').value;
var sum2 = newprice * newqty;
document.getElementById('total2').value = sum2;
}
Рабочая скрипка для игры:https://jsfiddle.net/cjxs7pLo/1 /
В качестве дополнительного (не относящегося к делу) примечания, вы определяете переменную с именем, sum
значение которой является произведением двух значений. Это никоим образом не относится к коду, но его название вводит в заблуждение и должно быть исправлено, поскольку другие люди, читающие ваш код, могут подумать, что это сумма, но это не сумма.
Комментарии:
1. спасибо за помощь, брат … работает, к сожалению, я не голосовал, потому что у меня репутация менее 15, но я буду подталкивать вас, когда я достигну 15
2. пожалуйста. не стесняйтесь принять ответ выше, чтобы закрыть сообщение.