JavaScript初心者です。
URLの末尾に含まれる文字列を名前にもつclassのstyleを変更したいんですが。。
URLに含まれる文字列を名前にもつidのスタイル変更については解決したのですが、同様のことclassでもやりたいと考えています。
例えばURLの末尾が /index.html?AAA&BBB となっている場合、非表示だったAAAとBBBのdivを表示するということをやりたいです。
ソースは以下になります。
前半でURLの末尾を取得して、後半でclassのスタイルを書き換えているつもりです。それぞれでは動作するんですが、あわせると動作しません。自分はかなり初心者ですので、根本的な誤りがあるかもしれませんが、ご教授よろしくお願いします。
<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>test</title>
<style type="text/css">
<!--
.AAA,.BBB,.CCC {
width:200px;
background-color:#ccc;
margin:10px;
display:none;
}
-->
</style>
<script language=javascript>
<!--
function changeStyle(){
var query = window.location.search.substring(1);
var search = query.split("&");
for (var i = 0; i < search.length; i++) {
var XXX = search[i];
}
var allElement = document.getElementsByTagName('*');
for (var j = 0; j < allElement.length; j++) {
if (allElement[j].className=='XXX') {
allElement[j].style.display = "block";
}
}
}
-->
</script>
</head>
<body onload=changeStyle();>
<div class="AAA">111</div>
<div class="AAA">222</div>
<div class="AAA">333</div>
<div class="BBB">444</div>
<div class="BBB">555</div>
<div class="CCC">666</div>
<div class="CCC">777</div>
</body>
</html>
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ツッコミどころ満載よ。
文法的にもダメな点多いけど
今回はそれはつっこまないでおくわね。
とりあえず動作面のみのつっこみにしておくわ。
まず最初のfor文終了すると
変数XXXには/index.html?AAA&BBB&CCC
と来た場合の一番最後のCCCになるわよ。
次に
allElement[j].className=='XXX'
文字列のXXXと比較してどうすんのよ。
この2点を直せば思うように動作するはずよ。
No.2
- 回答日時:
大きく間違いが2つ。
一つは「if (allElement[j].className=='XXX')」の行
'XXX'ではなくXXX、つまり変数と比較しなければ無意味。
もう一つはループの問題、iループの外でjループを回してますが
フロー的にはiループの中にjループを入れる必要があります。
元ソースを活かしてかくとこんな感じ
<style>
.AAA,.BBB,.CCC {
width:200px;
background-color:#ccc;
margin:10px;
display:none;
}
</style>
<script>
window.onload=function(){changeStyle();}
function changeStyle(){
var query = window.location.search.substring(1);
var search = query.split("&");
for (var i = 0; i < search.length; i++) {
var XXX = search[i];
var allElement = document.getElementsByTagName('*');
for (var j = 0; j < allElement.length; j++) {
if (allElement[j].className==XXX) {
allElement[j].style.display = "block";
}
}
}
}
</script>
<div class="AAA">111</div>
<div class="AAA">222</div>
<div class="AAA">333</div>
<div class="BBB">444</div>
<div class="BBB">555</div>
<div class="CCC">666</div>
<div class="CCC">777</div>
実際のところもうちょっと工夫があると効率的な処理ができそうですが・・・
No.1
- 回答日時:
>for (var i = 0; i < search.length; i++) {
>var XXX = search[i];
>}
↑の部分のループを単独で回しているので、次にある実際の処理の時には、XXXの最後の値に対してしか処理が行われていないだけでは?
以下のような構造にすればよいのでは?
for (var i=0; ・・・){
for (var j=0; ・・・){
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
クリックで色変更後に既に変更...
-
createElementが一瞬で消えてし...
-
javascriptテキストBOX色を元に...
-
iframe内のリンクが飛ばないの...
-
指定したパスが現URLに含まれて...
-
innerHTMLの初期値
-
Jquery 親要素で順番入れ替え
-
JSで動的にリンクを作成
-
変数内容をHTML内で表示する方法
-
createElementで作成した要素を...
-
jqueryを使って無駄なspanタグ...
-
removeEventListenerについて
-
innerHTMLに入れたリンクが反応...
-
Notice:Undefined index が。
-
checkboxにチェックを入れると...
-
読み込んだQRコードをフォーム...
-
console.log結果をhtmlで表示し...
-
文字列より<・・・>を削除す...
-
removeAttribute()メソッドで削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
HTMLタグに複数のクラスを設定...
-
変数名をどのようにつけるのが...
-
401エラードキュメントを401.ht...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
タブで開いてさらにタブ内をア...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
表示・非表示のスクリプトで、...
-
HTMLとJavaScriptで作ったタイ...
-
HTMLとJavaScriptで作ったタイ...
-
getElementByIdの戻り値がnull...
-
指定したパスが現URLに含まれて...
-
[急ぎ] videoタグで埋め込んだm...
-
IFRAMEの表示/非表示を切り替え...
-
iframe内のリンクが飛ばないの...
-
removeAttribute()メソッドで削...
-
背景色を透明化
-
jQueryで同じid属性が複数あっ...
おすすめ情報