如何使用Prototype JS检查元素的每个值,如果等于零则更改它?

时间:2014-09-01 15:00:56

标签: prototypejs

我有一个页面列出了一堆产品及其价格。

所有价格标签都是这样的:

<span class="price">....</span>

我想检查这些元素中的每一个,看它是否等于$ 0.00(文本),如果是,则将其替换为特定的文本消息,而不是显示零价格。

我如何在Prototype JS中编写它?完全是新的,无法弄清楚。

感谢。

我正在尝试这个,但它不起作用:

if($$('.price') == "$0.00"){ $$('.price').update('some text'); }

1 个答案:

答案 0 :(得分:1)

$$()函数返回一个数组,因此您无法(成功)将其与字符串进行比较。同样,数组没有update()函数,因此$$('.price').update(...)永远不会工作。


如果你正在使用Prototype 1.7版,那么你可以这样做:

$$('.price:contains("$0.00")').invoke('update', 'some text');

再次$$返回一个数组,但我使用:contains("$0.00")来过滤内容,因为它避免了编写循环。然后Enumerable#invoke()在每个返回的元素上调用'update',这也避免了编写循环。


对于早于1.7的版本,你无法避免至少一个循环,所以这可能是最好的方式:

$$('.price').each(function(span) {
    if (span.innerHTML == '$0.00') {
        span.update('some text');
    }
});