2014-09-01 25 views
0

我有一个页面列出了一堆产品及其价格。如何使用Prototype JS检查元素的每个值,并在等于零时将其更改?

而且所有的价格标签是这样的:

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

我要检查这些元素中的一个,看它是否等于$ 0.00(文字),如果是这样,那么与特定的文本替换消息而不是显示零价格。

如何在Prototype JS中编写该代码?完全新的这一点,无法弄清楚。

谢谢。

我想这一点,但它不工作:

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

回答

1

$$()函数返回一个数组,所以你不能(成功),把它比作一个字符串。同样,阵列没有update()函数,因此$$('.price').update(...)将不会工作。


如果您使用原型版本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'); 
    } 
}); 
相关问题