下記のhtmlのソースで、classNameの所が何をしているのかが
分からない。
htmlは、単に下記の行からテキストボックスの内容を読んで、該当する行を
表示する物です。例えば、殺すと入力すると、下記が表示されます。
奥さんが浮気をしているので間男を殺す事ばかりを考える事
毎日朝から酒を腹一杯飲む事
奥さんと欠かさずに24時間交尾をする事
朝から晩迄耐える事無く一時の休みも無く奥さんの浮気を心配する事
食事は、常に腹一杯無理してでも食べる事
塩辛い物は、遠慮しないで食べる事
奥さんが浮気をしているので間男を殺す事ばかりを考える事
以下省略
htmlの内容は下記です。
<html>
<head>
<title>サンプル</title>
</head>
<body>
<script type="text/javascript">
<!--
function choice(){
var reg=new RegExp(document.getElementById("keyword").value);
var obj=document.getElementById("target").getElementsByTagName("li");
for(var i=0;i<obj.length;i++){
obj[i].className=(obj[i].innerHTML.match(reg))?"":"hide";
}
}
// -->
</script>
<style>
li.hide{display:none;}
</style>
<p>夢も希望も亡くなった人は下記を参照</p>
<ol id="target">
<LI>毎日朝から酒を腹一杯飲む事</LI>
<LI>奥さんと欠かさずに24時間交尾をする事</LI>
<LI>朝から晩迄耐える事無く一時の休みも無く奥さんの浮気を心配する事</LI>
<LI>食事は、常に腹一杯無理してでも食べる事</LI>
<LI>塩辛い物は、遠慮しないで食べる事</LI>
<LI>奥さんが浮気をしているので間男を殺す事ばかりを考える事</LI>
<LI>以下省略</LI>
</OL>
<input type="text" name="keyword" id="keyword">
<input type="button" value="choice" onclick="choice()">
</body>
</html>
この中で、以下のfor文が何をしているのかが分かりません。
この中で、classNameと言うのは、何を示しているのでしょうか。
宜しくお願いします。
for(var i=0;i<obj.length;i++){
obj[i].className=(obj[i].innerHTML.match(reg))?"":"hide";
}
No.2ベストアンサー
- 回答日時:
> ここでのclassNameと言うのは、cssのクラス。
> 次の3項演算子は、マッチした時にclassName=""にする。
> アンマッチの時は、className="hide"とする。
その認識でOKです。
> ここではclassName=""と言うのが、何を示しているのだろうか。
> と言う新たな疑問が有ります。
いやまさに、ついているclassを消しているのです。
javascriptの因習で、タグへのclassにアクセスするにはclassNameプロパティを
上書きすることで処理するのが一般的でした。
モダンなブラウザではclassListを使うことができるので
classNameを上書きするときに発生する「他のクラス名まできえちゃう」のを
さけることができます。
ただしIEはclassListの実装が不十分で、本来はclassList.toggle("クラス名",フラグ)
で処理ができるのですが、IE対策のためremoveして必要なものだけaddしてあります
No.1
- 回答日時:
まず、
> var obj=document.getElementById("target").getElementsByTagName("li");
で、id=targetのタグ以下にあるliを全て抜きだして
> for(var i=0;i<obj.length;i++){
一つ一つのobjを検証して
> obj[i].className=(obj[i].innerHTML.match(reg))?"":"hide";
それぞれのclassNameを正規表現でヒットしたものだけhideに書き換えています
しかし書き方が古いので今風に書くとこんな感じです
<script>
document.addEventListener('click',function(e){
var t=e.target;
if(t.nodeName=="INPUT" && t.type=="button" && t.value=="choice"){
choice();
}
});
function choice(){
var reg=new RegExp(document.querySelector("#keyword").value);
Array.prototype.map.call(document.querySelectorAll("#target li"),function(x){
x.classList.remove("hide");
if(!x.innerHTML.match(reg)) x.classList.add("hide");
});
}
</script>
<style>
li.hide{display:none;}
</style>
<p>夢も希望も亡くなった人は下記を参照</p>
<ol id="target">
<LI>毎日朝から酒を腹一杯飲む事</LI>
<LI>奥さんと欠かさずに24時間交尾をする事</LI>
<LI>朝から晩迄耐える事無く一時の休みも無く奥さんの浮気を心配する事</LI>
<LI>食事は、常に腹一杯無理してでも食べる事</LI>
<LI>塩辛い物は、遠慮しないで食べる事</LI>
<LI>奥さんが浮気をしているので間男を殺す事ばかりを考える事</LI>
<LI>以下省略</LI>
</OL>
<input type="text" name="keyword" id="keyword" value="奥さん">
<input type="button" value="choice">
有難う御座います。
obj[i].className=(obj[i].innerHTML.match(reg))?"":"hide";
ここでのclassNameと言うのは、cssのクラス。
次の3項演算子は、マッチした時にclassName=""にする。
アンマッチの時は、className="hide"とする。
上記の様に理解しましたが。これで合っているでしょうか。
唯、ここではclassName=""と言うのが、何を示しているのだろうか。
と言う新たな疑問が有ります。
済みません。よろしく回答願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
【Tabキー】特定の範囲内だけで...
-
テキストボックスがブランクの...
-
ブラウザに応じたJavaScriptの...
-
フレームでページ内検索機能
-
同じIDで定義した要素の配列を...
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
C#テキストボックスの文字を配...
-
window.openでタイトル名の指定
-
functionから別のfunctionを実...
-
クリッカブルマップのリンク部...
-
JAVAスクリプトで指定時間以降...
-
undefinedを表示させない方法は...
-
Vb.netのグローバル変数の宣言...
-
googleスプレッドシートのApps ...
-
シンプルなweb版スタンプラリー...
-
DOM要素を削除しても、イベント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
任意の座標をクリックさせるには
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
HTML:Tableタグに対し、JavaScr...
-
JavaScriptでオブジェクトを取...
-
onchangeイベントを使ってspan...
-
【Tabキー】特定の範囲内だけで...
-
モーダルダイアログウィンドウ...
-
重複しないくじの作り方がわか...
-
javascript 特定のタグのidの存...
-
配列の大括弧と丸括弧はどう違う?
-
javascriptであるボタンを押す...
-
「nullまたはオブジェクトでは...
-
div要素内の全input要素をdisable
-
onclickを使わずにイベント処理...
-
画像上のクリックした場所が分...
-
RadioButtonListの表示制御
-
javascriptで自動計算フォーム...
おすすめ情報