使用javascript通过其类名获取元素的值

使用javascript通过其类名获取元素的值,javascript,prototypejs,Javascript,Prototypejs,大家好,我有这样一个元素: <div class="price-box"> <span class="regular-price" id="product-price-27"> <span class="price"> ... </span> </span> </div> <input type="text" name="qty" id=

大家好,我有这样一个元素:

<div class="price-box">
     <span class="regular-price" id="product-price-27">
        <span class="price">
           ...
        </span>
      </span>

 </div>

<input type="text" name="qty" id="qty" maxlength="12" value="1" title="Qty" class="input-text qty" />
但那没用

没有jquery我如何获得值? 注意:我的项目中包含了prototype.js

这个呢

<button type="button" title="Add to Cart" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span>Add to Cart</span></span></button>
添加到购物车

我想用Javascript和它的类名来禁用它

首先,它的
getElementsByClassName
elements
是复数形式)——这将返回满足条件的元素数组。必须指定数组的索引才能修改元素属性:

document.getElementsByClassName('input-text qty')[0].value="myvalue"
您可能正在寻找:

这将返回单个项,而不是节点列表。如果您想要一个节点列表,请使用替代方案。请记住,这些方法都需要时间。您可以使用的选择器仅限于执行此代码的浏览器。保持简单

这两种方法比
getElementsByClassName
具有更好的浏览器支持,因此我鼓励您使用它们,而不是采用当前的方法

演示:


getElementByClassName()
返回匹配元素的数组,因此要访问数组的第一个元素,请使用
0
索引

document.getElementsByClassName('input-text qty')[0].value="myvalue";

您可以使用input标记中的id(qty),并通过
getElementById()
类似的方式将值放在这个标记上

<input  type="text" name="qty" id="qty" maxlength="12" value="1" title="Qty" class="input-text qty" />

document.getElementById('qty').value="myvalue";

document.getElementById('qty').value=“myvalue”;
您有
id=“qty”
所以忘记
,只需使用

document.getElementById('qty').value = "myvalue";
这是最有效的

其他dom本机方法,如
getElementsByClassName/TagName
(注意元素后面有
s
)返回类似数组的对象
NodeList


您需要使用索引或循环来访问它。

错误在于您使用了:

1)
getElementByClassName
而不是
getElementsByClassName

2)
getElementsByClassName
返回数组,所以必须获取[0]元素

所以试试这个:

var p = document.getElementsByClassName('input-text qty')
console.log(p[0])
p[0].value = "MyValue"

由于您已经在页面中使用了Prototype,您可以使用“双美元”方法找到此元素:

正如上面其他人指出的,这将返回一个匹配元素的数组(如果页面上没有匹配的元素,则返回一个空数组)。因此,对结果执行任何操作的最简单方法是使用invoke():

任何原型元素方法都可以用这种方式调用。如果要根据某个属性对元素执行自定义操作,可以使用each():


我用过它,在控制台上显示TypeError:Qty是null@Souf它可以工作:。确保正确写入选择器。var addToCartButton=document.querySelector(“.button.btn cart”);我更好奇的是这里播放的动画演示,然后是问题本身@JonathanSampson你救了我的命:-))OP需要获取值,因此执行
$$('.input text.qty')[0]。value
将获取该值,但额外的
$$()
信息需要+1
document.getElementById('qty').value = "myvalue";
var p = document.getElementsByClassName('input-text qty')
console.log(p[0])
p[0].value = "MyValue"
$$('.input-text.qty');
$$('.input-text.qty').invoke('setValue', 'myvalue');
$$('.input-text.qty').invoke('disable');
$$('.input-text.qty').each(function(elm){
  if (elm.frobber == 'froom') elm.remove();
});