2013-03-01 109 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

而且,正如其他人指出的那樣,您希望將變量設置爲引用元素,而不是值。然後你可以檢索或設置元素的值。