2011-03-09 69 views
9

我得到了下面的代碼,我想使它匹配的一類,而不是上ID:JS Prototype按類來獲取元素?

HTML:

<div id='testdiv'> 
    <div class="lol"> 
     [First Title|<a class="external" href="http://test.com">http://test.com</a>] 
     Another line 
     [Second Title|<a class="external" href="http://test.com">http://test.com</a>] 
     More text 
     [Third Title|<a class="external" href="http://test.com">http://test.com</a>] 
    </div> 
</div> 

的Javascript:

var textContainer = document.getElementById("testdiv"); 
var linkText = textContainer.innerHTML; 
var pattern = /\[([^|]+)\|([^>]+.?)[^<]*(<\/a>)\]/g; 
var result = linkText.replace(pattern, "$2$1$3"); 

textContainer.innerHTML = result; 

完整的示例: http://jsfiddle.net/JFC72/17/

我怎樣才能讓它匹配「myclass」呢? 謝謝!

回答

0

class和id的區別,只有一個項目可以有相同的ID,但更多的項目可以有相同的類。

喲,如果你要選擇具有相同類商品,則應該認爲aboute也並不總是一項

onload=function(){ 
if (document.getElementsByClassName == undefined) { 
    document.getElementsByClassName = function(className) 
    { 
     var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)"); 
     var allElements = document.getElementsByTagName("*"); 
     var results = []; 

     var element; 
     for (var i = 0; (element = allElements[i]) != null; i++) { 
      var elementClass = element.className; 
      if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass)) 
       results.push(element); 
     } 

     return results; 
    } 
} 
} 

我希望這個作品。

你也可以使用jQuery類選擇 http://api.jquery.com/class-selector/

9

我認爲你需要的$$方法。它選擇符合CSS選擇器strict的DOM元素。在這種情況下,您想要

var elements = $$('.myclass'); 

它以文檔順序返回所有匹配元素的列表。您可以通過索引或操作上的所有這些事情訪問他們像each

http://www.prototypejs.org/api/utility

這就是原型是什麼。 getElementById是0ooold

3

下面是一個工作示例,說明如何在Prototype中使用each來遍歷所有具有order-cc-charged類的元素。

var order_cc_charged = 0; 

$$('order-cc-charged').each(function (elem) { 
    order_cc_charged += parseFloat($('order-cc-charged').innerHTML); 
});