原型Js多选择器

时间:2016-10-12 13:10:37

标签: javascript prototypejs

这是我的css路径:

#product_composite_configure .entry-edit .buttons-set.a-right .scalable

如何使用原型js选择此项?我想为此项添加一个新属性。

这不起作用:

<script type="text/javascript">
    $$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable').setAttribute("test","test");
</script>

Thx

[UPDATE]

这也不起作用:

$$('div#product_composite_configure div.entry-edit div.buttons-set button.scalable').setAttribute("test","test");

2 个答案:

答案 0 :(得分:0)

为什么复杂化?试试这个:

POST "https://login.microsoftonline.com/{tenantName}/oauth2/token"

答案 1 :(得分:0)

$$()选择器返回所选元素的数组。因此,您需要迭代数组或使用内置迭代器invoke()

例如

$$('.css_class').invoke('writeAttribute','checked',true);

或您的CSS选择器

$$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable').invoke('writeAttribute',"test","test");

我使用writeAttribute()代替setAttribute(),因为它适用于PrototypeJS支持的所有浏览器

还有其他一些方法可以使这项工作

$('product_composite_configure').down('.entry-edit .buttons-set.a-right .scalable').writeAttribute('test','test');

$$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable')[0].writeAttribute('test','test');

这完全取决于您的HTML结构以及您期望的行为。如果您只想定位一个元素,那么使用down()的id查找可能会更好。如果您要在#product_composite_configure元素中包含多个子元素,那么使用$$()选择器和invoke()将意味着任何新元素都会受到影响,而不会重写脚本。