2011-07-28 14 views
0

私は与えられたクラスで、ドキュメント内のすべての要素を取得することになって、次の機能があります。Javascriptの表示/非表示クラス問題

<script type="text/javascript">document.write(getElementByClass('done'));</script> 

:私は、この関数を呼び出すと

function getElementByClass(objClass) 
{ 
// This function is similar to 'getElementByID' since there is no inherent function to  get an element by it's class 
    var elements = (ie) ? document.all : document.getElementsByTagName('*'); 
    for (i=0; i<elements.length; i++) 
{ 
    alert(elements[i].className); 
    alert(objClass); 
    if (elements[i].className==objClass) 
    { 
     return elements[i] 
    } 
} 
} 

を何も起こりません。関数に何か問題はありますか?

+4

なぜjQueryのようなライブラリを使用しないのですか?そうすれば、ホイールを再開発する必要はありません。 – robbrit

+2

私はこの人になりたくありませんが、なぜjQueryを使用しないのですか?あなたがしなければならないのは、 '$("。class_name ")'だけです。 –

+0

Javascriptにはまったく新しい、まだjQueryまでは行っていません。 jQueryを動作させるために何かをインストールする必要がありますか? 編集:jQueryのソースを自分のウェブサイトにスローしました。単純な.jsファイルのように機能していたことに気づいていませんでした。 – muttley91

答えて

2

この関数を参照していることは、そのクラス名を持つすべての要素を取得していない、それは1を取得します。そしてあなたがそれを呼んでいるところであなたの意図は何ですか? document.writeはあなたのページにすでにあるDOM要素で行うのが面白いようです。

私は、「使用jqueryの」言うことを憎む...しかし、あなたはおそらく必要があります。 ieの行方不明宣言とは別に

は、この機能は、作業を行います。 1つの要素に複数のクラスがある場合、この関数は機能しません。

+0

これを行うにはjQueryを使用すると思います。ありがとう! – muttley91

2
document.getElementsByClassName('done'); 

EDIT:

SRC:http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/

/* 
    Developed by Robert Nyman, http://www.robertnyman.com 
    Code/licensing: http://code.google.com/p/getelementsbyclassname/ 
*/ 
var getElementsByClassName = function (className, tag, elm){ 
    if (document.getElementsByClassName) { 
     getElementsByClassName = function (className, tag, elm) { 
      elm = elm || document; 
      var elements = elm.getElementsByClassName(className), 
       nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null, 
       returnElements = [], 
       current; 
      for(var i=0, il=elements.length; i<il; i+=1){ 
       current = elements[i]; 
       if(!nodeName || nodeName.test(current.nodeName)) { 
        returnElements.push(current); 
       } 
      } 
      return returnElements; 
     }; 
    } 
    else if (document.evaluate) { 
     getElementsByClassName = function (className, tag, elm) { 
      tag = tag || "*"; 
      elm = elm || document; 
      var classes = className.split(" "), 
       classesToCheck = "", 
       xhtmlNamespace = "http://www.w3.org/1999/xhtml", 
       namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null, 
       returnElements = [], 
       elements, 
       node; 
      for(var j=0, jl=classes.length; j<jl; j+=1){ 
       classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; 
      } 
      try { 
       elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null); 
      } 
      catch (e) { 
       elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null); 
      } 
      while ((node = elements.iterateNext())) { 
       returnElements.push(node); 
      } 
      return returnElements; 
     }; 
    } 
    else { 
     getElementsByClassName = function (className, tag, elm) { 
      tag = tag || "*"; 
      elm = elm || document; 
      var classes = className.split(" "), 
       classesToCheck = [], 
       elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag), 
       current, 
       returnElements = [], 
       match; 
      for(var k=0, kl=classes.length; k<kl; k+=1){ 
       classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)")); 
      } 
      for(var l=0, ll=elements.length; l<ll; l+=1){ 
       current = elements[l]; 
       match = false; 
       for(var m=0, ml=classesToCheck.length; m<ml; m+=1){ 
        match = classesToCheck[m].test(current.className); 
        if (!match) { 
         break; 
        } 
       } 
       if (match) { 
        returnElements.push(current); 
       } 
      } 
      return returnElements; 
     }; 
    } 
    return getElementsByClassName(className, tag, elm); 
}; 
+1

一部のブラウザではご利用いただけません。 – aepheus

1

あなたは のvar要素=(IE)である。すなわち何その後、完全なソースを掲載している場合は? document.all:document.getElementsByTagName( '*'); 火かき棒でエラーを追跡しようとしています。

1

var elements = (ie)は、未定義の変数ie

0

使用可能な場合は、おそらくgetElementsByClassNameを使用してください。

1

JavaScriptライブラリの使用を検討しましたか?このような関数は多くの書かれているtimes before、これらの種類のものの時間を無駄にするのは痛いです。

関連する問題