今現在
ボタンを押すと
class やidが変化するようにしているのですが、
変化後、classやidで指定したcssの色にはなるのですが、(同時に元のclassやidのcssの色は無効になる)
getElementByIdや
getElementsByClassName("sw")[1]はページを読み込んだときの初期状態のidやclassに対してかかるようで、
読み込み終了後のid、classの変化後にも対応するにはどのようにするのでしょうか?
以下のがページ読み込み後idやclassが変わっても、読み込んだ時に設定されているid、classで実行されてしまう物です。
function lod(){
document.getElementsByClassName("sw")[1].onclick = (function(){iFrame()});
document.getElementById("td").onclick = (function(){iFrame()});
};
まだJavascriptはあまり詳しくないです。
質問が下手ですいません。補足が必要でしたら出来る範囲で行います。
よろしくお願いします。タスケテー
No.3ベストアンサー
- 回答日時:
初期値の<a id="tex" class="show">テキスト1</a>は
<a id="tex" class="hide">テキスト1</a>ですよね?
フラグで管理しているならbgredのonlickに分岐をつけておくだけでよいでしょう。
document.getElementById("bgred").onclick = function(){if(flag==0){onoff()};}
No.2
- 回答日時:
>次はスイッチ1を押してもIDが変わっているので何も起こらない。
はずなんですが、起こってしまうのです。起こるのが正常です。
イベントハンドラ(onclick)はその「要素」に括り付けられています。
IDは要素を得る時に利用しただけであって、
IDが変わっても括り付けたイベントハンドラは不変です。
たぶん、
>document.getElementById("bgred").onclick = (function(){onoff()});
こうする事で ID に対して括りつけたように思ってしまったのかもしれませんが、
これは、font要素にonclick属性を書いた場合と同じです。
(イベントハンドラを付けたり外したりはちょっとややこしいので割愛します)
クリックされたら onoff() は必ず呼ばれるものとしてスクリプトを書いてみてはどうでしょう。
回答ありがとうございます。
>イベントハンドラ(onclick)はその「要素」に括り付けられています。
>IDは要素を得る時に利用しただけであって、
>IDが変わっても括り付けたイベントハンドラは不変です。
やっぱりそうでしたか><
ちょっとスッキリしました
No.1
- 回答日時:
・ getElementByIdで確かめたところ、変更後のものが有効になるようです。
・ 蛇足かも知れませんが、
1. idは、ユニークでなければならない。
2. プロパティclassNameには、空白で区切られた複数のCSSクラス名があるというのはご存知でしょうか。
この回答への補足
>プロパティclassName・・・
classの複数指定については知ってますよ~
>getElementByIdで確かめたところ、変更後のものが有効になるようです。
確認済みですが、変更前の物もなぜか有効なのです。
ちょっと作ってみました。
window.onloadあたりが怪しいのかもしれません。
指定IDをクリックでイベントを実行する方法は他にありませんか?
できるだけシンプルに。
<font id="bgred" onclick="onoff()">スイッチ1<a id="
のようにすると、当たり前ですが、ずっとスイッチが有効になってしまうので、このような方法をとっているのですが上手くいきません。
<html>
<head>
<title></title>
<style type="text/css">
<!--
#bgred {background-color:red;color:white;}
#bgblue {background-color:blue;}
#bggreen {background-color:green;}
.hide { display:none;}
.show { display:inline; }
-->
</style>
<script type="text/javascript">
<!--
var flag=0;
function onoff() {
if (flag == 0) {
document.getElementById("tex").className = "hide";
document.getElementById("bggreen").className="show";
document.getElementById("bgred").id="bgblue";
flag = 1;
} else {
document.getElementById("bggreen").className = "hide";
document.getElementById("bgblue").id="bgred";
document.getElementById("tex").className="show";
flag = 0;
}
}
window.onload = function sw(){
document.getElementById("bgred").onclick = (function(){onoff()});
document.getElementById("bggreen").onclick = (function(){onoff()});
};
function test1(){document.getElementById("tex").className = "hide";}
//-->
</script>
<body>
<font id="bgred">スイッチ1<a id="tex" class="show">テキスト1</a></font><br>
<b id="bggreen" class="hide">スイッチ2</b><br>
<input type="button" onclick="onoff()" value="TEST用">
</body>
</html>
<!--
スイッチ1を押すとスイッチ1のIDがかわり背景が青に。テキスト1が消える。スイッチ2が出る。
次はスイッチ1を押してもIDが変わっているので何も起こらない。はずなんですが、起こってしまうのです。IDは変わってるのに。
スイッチ2を押すとスイッチ1のIDが元に戻り、テキスト1が出現。スイッチ2が消える。
以降繰り返し利用可能
-->
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript 【Javascript】ボタンクリックで2つのclassに対し、それぞれ別のclassを追加したい 1 2022/07/29 20:52
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
表示・非表示のスクリプトで、...
-
テキストエリア内の一部の文字...
-
javascriptでpostした値が取得...
-
クリックするとテーブルの列の...
-
▲▲ツリーメニューの詳細?2▲▲Ja...
-
読み込んだQRコードをフォーム...
-
クリックで色変更後に既に変更...
-
console.log結果をhtmlで表示し...
-
removeEventListenerについて
-
計算結果の表示方法について
-
タブで開いてさらにタブ内をア...
-
自働生成される<div>タグに連番...
-
javascriptテキストBOX色を元に...
-
removeAttribute()メソッドで削...
-
createElementで作成した要素を...
-
折りたたみ部分にアンカーでリ...
-
dblclickでdiv要素を一回だけ作...
-
classの中の<a>タグにidを追加
-
検索結果を別フレームに表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
クリックで色変更後に既に変更...
-
iframe内のリンクが飛ばないの...
-
[急ぎ] videoタグで埋め込んだm...
-
背景色を透明化
-
console.log結果をhtmlで表示し...
-
表示・非表示のスクリプトで、...
-
getElementByIdの戻り値がnull...
-
removeAttribute()メソッドで削...
-
テキストエリア内の一部の文字...
-
タブで開いてさらにタブ内をア...
-
IFRAMEの表示/非表示を切り替え...
-
HTMLタグに複数のクラスを設定...
-
jQueryのアコーディオンメニュ...
-
変数内容をHTML内で表示する方法
-
取得した要素がインライン要素...
おすすめ情報