2013-03-01 72 views
2

我创建一个应用程序,会告诉你一个产品的价格时,条形码扫描的变量。基本上,当扫描条码时,它会进入文本字段,然后基于它是哪个条码,textarea将通过javascript将其价格放入它。我已经得到这个工作,但我似乎无法创建一个特定的变量,以保存我以后通过吨代码查看。无法使用JavaScript创建

这里是我的javascript:

function showPrice() { 
    var userInput = document.getElementById('barcode').value; 
    var price = document.getElementById('textarea').innerHTML; 
    if (userInput === "783466209834") { 
     price = "16.99"; 
    } else { 
     price = "Not a valid barcode"; 
    } 
} 

这里是我的HTML:

<input type="text" name="text" class="textinput" id="barcode"> 
<input type="button" onclick="showPrice()" value="Submit"> 
<textarea name="" cols="" rows="" readonly="readonly" id="textarea"></textarea> 

现在,我的代码是不工作的,但如果我删除

var price = document.getElementById('textarea').innerHTML; 

并分别替换if语句中的“price”,然后才能正常工作。我不确定为什么我不能创建这个价格变量。

回答

3

因为要存储的innerHTML作为变量,而不是存储到它参考

其更改为var textarea = document.getElementById('textarea');然后textarea.innerHTML = "16.99"等。

+0

非常感谢你。我认为这是我错过的一些小东西,但似乎有点奇怪,我可以在一个变量中有一个.value而不是。innerHTML – Grooms 2013-03-01 21:48:20

+0

不,你可以在一个变量中有一个'innerHTML'。它只是“innerHTML”的内容,而不是对属性映射的引用。 – AlienWebguy 2013-03-01 22:57:30

+0

噢,好的。这更有意义。再次感谢! – Grooms 2013-03-04 19:19:10

3

你所得到的textarea的innerHTML并将其存储在变量price。相反,你只需要在元素存储在变量,然后调用price.innerHTML把你的结果在DOM。喜欢这样:

function showPrice() { 
    var userInput = document.getElementById('barcode').value; 
    var price = document.getElementById('textarea'); 
    if (userInput === "783466209834") { 
     price.innerHTML = "16.99"; 
    } else { 
     price.innerHTML = "Not a valid barcode"; 
    } 
} 

编辑:由于talemyn正确地指出,你应该使用.value而不是.innerHTML了改变的textarea S中的内容。虽然它看起来像是一样,但使用.innerHTML会带来一些小缺点。

-1

你不应该分配一个值price,然后覆盖它......这就是你的代码做什么。我相信你认为你在innerHTML中创建了一个存储位置?

相反,只需要创建一个变量:

var price; 

运行你的代码像你一样;然后将结果放入页面中

document.getElementById("text area").innerHTML = price; 
+0

为什么要低估护理人员? – Floris 2013-03-12 11:40:36

-2

您使用两个单独的事情设置'价格'变量两次。你实际上并没有改变DOM。而是使用:

var price = document.getElementById('textarea'); 
if (userInput === "783466209834") { 
    price.innerHTML = "16.99"; 
} else { 
    price.innerHTML = "Not a valid barcode"; 
} 
3

如果你想与textarea的价值的工作,你需要访问document.getElementById('textarea').value,不innerHTML

而且,正如其他人指出的那样,您希望将变量设置为引用元素,而不是值。然后你可以检索或设置元素的值。