2013-05-26 2 views
0

Итак, я так же новичок, как и новый, чтобы писать код с помощью JavaScript, это на самом деле моя первая попытка, и это моя проблема. то, что мне нужно сделать с этой формой, умножает ввод поля Qty с вводом поля Price и автоматически заполняет поле Ext, но я могу только выяснить, как добавить итоговые значения количества и цены и заполнить эту сумму в Ext box. Вот код, я использую:Как размножаться в Javascript

function multiply1() { 
    var extend1=0 
    for (var i=1; i <= 2; i++) { 
     var id = "1_value"+i; 
     extend1 = extend1 + document.getElementById(id).value*1; 
    } 
    document.getElementById("extend1").value = extend1; 
} 
function multiply2() { 
    var extend2=0 
    for (var i=1; i <= 2; i++) { 
     var id = "2_value"+i; 
     extend2 = extend2 + document.getElementById(id).value*1; 
    } 
    document.getElementById("extend2").value = extend2; 
} 
function multiply3() { 
    var extend3=0 
    for (var i=1; i <= 2; i++) { 
     var id = "3_value"+i; 
     extend3 = extend3 + document.getElementById(id).value*1; 
    } 
    document.getElementById("extend3").value = extend3; 
} 
function multiply4() { 
    var extend4=0 
    for (var i=1; i <= 2; i++) { 
     var id = "4_value"+i; 
     extend4 = extend4 + document.getElementById(id).value*1; 
    } 
    document.getElementById("extend4").value = extend4; 
} 
function multiply5() { 
    var extend5=0 
    for (var i=1; i <= 2; i++) { 
     var id = "5_value"+i; 
     extend5 = extend5 + document.getElementById(id).value*1; 
    } 
    document.getElementById("extend5").value = extend5; 
} 

Кроме того, если вы вводите в общей сложности в поле Количество оно будет заполнять поле доб но также должны заселить к итогам доб коробки в материальном поле Итого, которое, очевидно, ISN» t происходит скрипт работает, чтобы суммировать внешние поля и заполнять поле итогов материалов, как вы можете видеть, введя общее количество в любую из внешних ящиков, и оно будет заполняться или суммироваться в поле материала.

ИТАК первый мне нужно умножить Количество и Цена коробки и во-вторых, мне нужно, чтобы выяснить, почему этот сценарий не получает значение от внутр коробки после того, как они поступают с Кол-во и цена сценария

function summate() { 
    var mattotal=0 
    for (var i=1; i <= 5; i++) { 
     var id = "extend"+i; 
     mattotal = mattotal + document.getElementById(id).value*1; 
    } 
    document.getElementById("mattotal").value = mattotal; 
} 

Спасибо за помощь!

ответ

2

I необходимо (...) умножить ввод поля Qty на ввод поля цены и автоматическое заполнение внешней коробки

Firsf off, вы суммируете значения (extend1 = extend1 + document.getElementById(id).value*1;). Если вы хотите, чтобы умножить их, ну, умножить их (но не забудьте инициализировать extend1 с 1 вместо 0):

function multiply1() { 
    var extend1 = 1;           // <--changed here 
    for (var i=1; i <= 2; i++) { 
     var id = "1_value"+i; 
     extend1 = extend1 * document.getElementById(id).value; // <--changed here 
    } 
    document.getElementById("extend1").value = extend1; 
} 

Так наименее травматичный способ делает это от multiply1() к multiply5().


ИТАК первый мне нужно умножить Количество и Цена коробки и во-вторых, мне нужно, чтобы выяснить, почему этот сценарий не получает значение от внутр коробки после того, как они поступают от Кол-во и цена сценарий

Ваш summate() не вызывается, потому что это подсел на «onInput» события extendN входов.И вы меняете extendN с:

document.getElementById("extend1").value = extend1; 

Какой не вызываетonInput событие.

Быстрое решение? После установки значений extendN позвоните по номеру summate(). Вот окончательный verison:

function multiply1() { 
    var extend1 = 1;           // <--changed here 
    for (var i=1; i <= 2; i++) { 
     var id = "1_value"+i; 
     extend1 = extend1 * document.getElementById(id).value; // <--changed here 
    } 
    document.getElementById("extend1").value = extend1; 
    summate();             // <--changed here 
} 

Вот демо с предлагаемыми изменениями: http://jsfiddle.net/zNFV8/

+1

Спасибо acdcjunior, это отлично работает для меня, я на самом деле пробовал все, что вы делали, кроме изменения var extend1 = 0 до 1. Ваш ответ мне очень помогает, я расстроен тем, что кто-то проголосовал за мой вопрос, сказав, что есть никаких исследований, когда я работаю над этим в течение нескольких недель и ищут бесчисленные учебники и примеры без успеха. Я думаю, что эта рейтинговая система бесполезна! – Jason

2
function multiply1() { 
    var qty = document.getElementById('1_value1').value; 
    var price = document.getElementById('1_value2').value; 
    if (qty && price) { 
     var total = qty * price; 
     document.getElementById("extend1").value = total; 
    } else { 
     document.getElementById("extend1").value = ''; 
    } 
} 

Там также нет необходимости иметь 5 различных multiplyN функций. Напишите одну функцию, которая принимает N в качестве параметра, и вычисляет идентификаторы элементов, используя это.

+1

Благодаря Barmar я не мог понять, как получить мой текущий сценарий к итогу от ряда к ряду так сделал то, что я знал, будет работать в то время. Мне легче учиться на примере, чем читать тонну учебников, которые на самом деле не показывают мне, что я пытаюсь сделать, это очень помогает мне! – Jason

0

У меня есть код, который может помочь. Она работает на моей локальной машине, но я не могу заставить его работать в jsfiddle:/

HTML код

<label for = "price"> Price </label> 
<input name="price" type = "text" id="price" /> 

<br /> 

<label for = "quantity"> Quantity </label> 
<input name="quantity" type = "text" id="quantity" /> 

<br /> 

<label for = "total"> Total</label> 
<input name ="total" type = "text" id = "total" /> 

Javascript

document.getElementById("quantity").setAttribute("onkeyup", 'calculateTotal()'); 
document.getElementById("price").setAttribute("onkeyup", 'calculateTotal()'); 

function calculateTotal() { 
    var price = parseFloat(document.getElementById("quantity").value); 
    var quantity = parseFloat(document.getElementById("price").value); 

if (price * quantity == parseFloat(price * quantity)) 
    document.getElementById("total").value = price * quantity; 
else 
    document.getElementById("total").value = ''; 
} 

CSS

label {width: 100px; float: left;} 
+0

Спасибо, все полезно, потому что я просто изучаю JavaScript! – Jason