
こんにちは。
http://www.dustindiaz.com/top-ten-javascript/のgetElementsByClass関数を使って
指定したクラスのクラスを書き換えたいのですが
どのようにすればいいかわかりません。
-------------------------------------------------------------------
function getElementsByClass(node,searchClass,tag) {
var classElements = new Array();
var els = node.getElementsByTagName(tag); // use "*" for all elements
var elsLen = els.length;
var pattern = new RegExp("\\b"+searchClass+"\\b");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
function SwitchClass() {
getElementsByClass('show').className = 'hide';
}
-------------------------------------------------------------------
のような感じでクラスを書き換えたいです。
getElementsByIdでいいじゃないって思うかもしれませんが、どうしてもClassで指定したいんです。
どうかよろしくお願いします。m(_ _)m
No.1ベストアンサー
- 回答日時:
こんにちは
class名の取得は配列で格納されていますので
obj = document.getElementsByClassName("show");
for(i=0;i<obj.length;i++) {
obj[i].className = "hide";
}
※class名が一致するもの全部を"hide"に変える
document.getElementsByClassName("show")[2].className = "hide";
※3番目のclass="show"を"hide"に変える
ようになります
※因みにgetElementsByClass(node,searchClass,tag) をどのように動かしているのか分かりませんがうまく動かされませんでした(><)
<script type="text/javascript"><!--
document.getElementsByClassName = function (className) {
var i, j, eltClass;
var objAll = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all;
var objCN = new Array();
for (i = 0; i < objAll.length; i++) {
eltClass = objAll[i].className.split(/\s+/);
for (j = 0; j < eltClass.length; j++) {
if (eltClass[j] == className) {
objCN.push(objAll[i]);
break;
}
}
}
return objCN;
}
function SwitchClass() {
obj = document.getElementsByClassName("show");
for(i=0;i<obj.length;i++) {
obj[i].className = "hide";
}
}
//--></script>
<style type="text/css"><!--
.hide { display:none; }
--></style>
<input type="button" onclick="SwitchClass()" value="消去">
<div class="show">aa</div>
<div class="show">bb</div>
<div class="ee">cc</div>
<div class="show">dd</div>
No.5
- 回答日時:
function getElementsByClass(searchClass,node,tag)をそのまま使ってみました。
function SwitchClass(cn1,cn2)の引数は、
cn1: 変更前のクラス名
cn2: 変更後のクラス名
また、対象は、デフォルトのdocument全体を利用しています。
--------------------------------------------------------------------------------
<html>
<head>
<title>getElementsByClass</title>
<script type="text/javascript">
<!--
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
function SwitchClass(cn1,cn2) {
classes = getElementsByClass(cn1);
for(i=0;i<classes.length;i++) {
classes[i].className = cn2;
}
}
//-->
</script>
<style type="text/css">
<!--
.show { display:block; }
.hide { display:none; }
-->
</style>
<body>
<input type="button" onclick="SwitchClass('show','hide')" value="showクラスの消去"/>
<input type="button" onclick="SwitchClass('hide','show')" value="showクラスの表示"/>
<hr/>
<div class="show">111111111111</div>
<div class="show">222222222222</div>
<div class="other">33333333333333</div>
<div class="hide">hidehidehide</div>
<div class="show">4444444444444</div>
</body>
</html>
No.4
- 回答日時:
試してませんが、その関数は配列を返すようですから、
対象が一つとわかっているなら#0を操作してみては?
getElementsByClass(document,'show','*')[0].className = 'hide';
また、ちょっとソレた回答かもしれませんがgetElementsByClassが使いたいと思ったなら
jQueryとか使ってみては?スクリプトをシンプルに書けるようになります。
http://www.mikage.to/jquery/
==スクリプト==
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){//ロード時の処理
$('#switch').click(function(){//#switchクリック時の処理
$('.show').toggleClass('hide');//.show のclassのトグル(切替)
});
});
</script>
==HTML==
<input type="button" value="switch" id="switch">
<p class="show">あああ</p>
<p class="aaa">AAAA</p>
<p class="show">いいい</p>
配列操作でうまく行きました!
jquery含めたライブラリにも親しんでいこうと思いますので
その時は上のソース参考にさせてもらいます!
とてもシンプルですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Java java final 1 2022/06/10 22:49
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS 【CSS】特定のリンクを含むaタグを指定できるかどうか? 3 2022/10/15 02:45
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTML:Tableタグに対し、JavaScr...
-
文字の色を一文字ずつ変更する...
-
ActiveXobjectが作成できない
-
ボタン上でマウスを押している...
-
innerHTML実行後のイベント
-
Javascriptでページ内の任意ク...
-
フォーカスを合わせる
-
文字列で条件分岐
-
onchangeイベントを使ってspan...
-
任意の座標をクリックさせるには
-
javascript の 命令文の記述で...
-
Javascript 特定のフォルダのデ...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
商品コードを入力で、商品名、...
-
HTTPSのとき":"が"%3A"ではなく...
-
リファラー情報のエンコードを...
-
JavaScriptで平日のみをカウン...
-
idを使わずにonclickで自身の要...
-
XMLの空白要素をJavas...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
onchangeイベントを使ってspan...
-
javascriptで編集可能不可能の...
-
javascript 特定のタグのidの存...
-
javascriptでスロットゲームを...
-
任意の座標をクリックさせるには
-
クリックを押した時にリンク先...
-
モーダルダイアログウィンドウ...
-
javascriptでCSVを呼出しvlookup
-
onclickを使わずにイベント処理...
-
【Tabキー】特定の範囲内だけで...
-
RadioButtonListの表示制御
-
オンマウスで音を鳴らせる為には?
-
Javascriptでページ内の任意ク...
-
オブジェクトがありません
-
javascriptであるボタンを押す...
-
オブジェクトがぶつかった時の処理
-
JavaScriptのID要素の中身をque...
おすすめ情報