2013-10-15 51 views
0

我正在写一个程序,要求购买金额,然后计算折扣价格。该函数可以工作,但只有当我将它设置在段落p>中时,属性innerHTML才起作用。我希望它在输入>中打印出来。所以我的问题是我需要使用哪些属性。财产在输入框中获得价值

错误消息: 遗漏的类型错误:无法设置属性 '的innerHTML' 空

<body> 
<p>Enter amount of purchases:<input type =" text" id ="purchase_amount" onkeyup ="calculate_discount()"/></p> 
<p>Discount price:<input type="text" id =" discount_amount"/></p> 
</body> 

function calculate_discount() { 
var purchase_amount = document.getElementById("purchase_amount").value; 
var answer; 
if (purchase_amount >= 10) 
{ 
    answer = purchase_amount - (purchase_amount * .10); 
} 
else if (purchase_amount < 10) 
{ 
    answer = purchase_amount; 
} 
document.getElementById("discount_amount").innerHTML = answer; 

}

感谢您的

http://jsfiddle.net/xK4s4/

+0

你得到删除空白该错误,因为元素的ID包含空格。删除它并使用'.value'而不是'.innerHTML'。 –

回答

0

  1. 在优惠金额输入元素的id属性

    id=" discount_amount"

  2. Set value instead of innerHTML.
  3. Make sure your script is placed before input element.
Work script:

<script> 
    function calculate_discount() { 
     var purchase_amount = document.getElementById("purchase_amount").value; 
     var answer; 
     if (purchase_amount >= 10) 
     { 
      answer = purchase_amount - (purchase_amount * .10); 
     } 
     else if (purchase_amount < 10) 
     { 
      answer = purchase_amount; 
     } 
     document.getElementById("discount_amount").value = answer; 
    } 
</script> 

<body> 
    Enter amount of purchases: 
    <input type="text" id="purchase_amount" onkeyup="calculate_discount()"/> 

    Discount price: 
    <input type="text" id="discount_amount"/> 
</body> 

Demo in jsfiddle.net

0

Demo

输入元素不使用innerHTML属性,而是设置value属性。

document.getElementById("discount_amount").value = answer; 

其他问题:

在小提琴,你运行该代码onload,这意味着你的功能是出了全球范围内的,不能由keyup事件中被调用。更改为no wrap - in head

你有DISCOUNT_AMOUNT元素ID前添加一个空格:

<p>Discount price:<input type="text" id =" discount_amount"/></p> 
+0

'value'必须被使用,但是'input'元素仍然有'innerHTML'属性(afaik),并且不能解释错误。 –

+0

@FelixKling是的,这是加上空间加onload。那么,onload只是小提琴中的一个问题,他的代码不同于此,因为他的误差越来越大,而小提琴则没有。 – MrCode