2012-07-18 110 views
2

我想知道以下是如何给我麻烦,它看起来很直接,但我不知道发生了什么。JavaScript没有得到价值

所以我有一个输入框,我想用户填写了,我每次运行时以下

我拿到身份不明,我不知道为什么。使用下面的JavaScript

var price = document.getElementsByName("price") 
    alert(price.value); 
+0

保持使用'document.getElementById(“id”)''的习惯。请参阅[这里](http://www.w3schools.com/jsref/met_doc_getelementbyid.asp) – 2012-07-18 10:30:26

回答

4
var price = document.getElementsByName("price")[0]; 
    alert(price.value); 

<input type="numbers" name="price" class="sell" placeholder="$0.00"> 

上午document.getElementsByName会给你的HTMLCollection(类型的数组)作为返回类型。这是因为你的dom中的许多元素可能会有相同的名称。因此,如果您有多个具有相同名称的复选框,则可以使用数组索引来引用每个复选框。

+0

返回类型不是数组,它是一个HTMLCollection。 – Quentin 2012-07-18 10:20:59

+0

感谢昆汀澄清 – 2012-07-18 10:22:27

4

你有几个问题。

引起你的问题的是getElementsByName返回一个HTMLCollection(它就像一个数组),而不是一个单一的元素。在尝试访问其属性之前,您需要关闭第一个项目。

var price = document.getElementsByName("price")[0]; 

二,numbers它不是一种输入类型。 number (singular)是。第三,如果您举例$0.00,那么您要通知人们您希望他们键入一个以$开头的值。您不能在号码中登录$

+0

+1,以便发现我错过的所有细微问题;)。 – Matt 2012-07-18 10:18:10

+0

是的,我知道一个,我们删除$后,用户钟表链接,我们把$ 100.00转换成美元10000 – RussellHarrower 2012-07-19 13:44:52

+0

@RussellHarrower - 如果你有一个'type =“number”'(并且浏览器支持它),那么浏览器**不会允许用户输入$字符**,所以占位符数据不应该建议他们应该。 – Quentin 2012-07-19 13:48:11