
うまく動作しないJavascriptなのですが、こういった方法は可能なのでしょうか?
お分かりになりましたらご教授お願いします。
--------------------
■html
<div class="orenge1"></div>
オレンジ1です<br>
<div class="orenge2"></div>
オレンジ2です<br>
<div class="orenge3"></div>
オレンジ3です<br>
--------------------
■Javascript 記述は最下部の</body>直前です。
<script type="text/javascript">
window.onload = function() {
document.getElementsByClassName("orange1").innerHTML = ('<a href="./item/?item=orange1">商品はコチラ</a>');
document.getElementsByClassName("orange2").innerHTML = ('<a href="./item/?item=orange2">商品はコチラ</a>');
document.getElementsByClassName("orange3").innerHTML = ('<a href="./item/?item=orange3">商品はコチラ</a>');
}
</script>
--------------------
■やりたい事
<div class="orenge1"></div>
の部分に
<a href="./item/?item=orange1">商品はコチラ</a>
を表示したいと思っています。
同一ページに複数回表れる場合もあります。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
0個以上の複数対象に同一の操作を行う簡単な記述
var a = Array.prototype.slice.apply(document.getElementsByClassName(クラス名));
a.forEach(function(e){e.innerHTML = 中身});
もっと簡単な記述
Array.prototype.forEach.call(document.getElementsByClassName(クラス名), function(e){e.innerHTML = 中身});
さらに簡単な記述
[].forEach.call(document.getElementsByClassName(クラス名), function(e){e.innerHTML = 中身});
No.2
- 回答日時:
まず、<script>を</body>直前に入れる理由は何でしょうか?
<script>は「本文」ではないのですから、よほどのことがない限り<head>に入れましょう。
読み込み順を気にしているのかもしれませんが、window.onloadに処理を設定するコードになっているのですからそこは関係ありません。それともwindow.onloadの意味を知らずなんとなくコピペしたんでしょうか?
次に、本文に示したHTML部分は何かのブロックに入っていますか?<body>直下に<div>以外に囲まれていないインライン要素を置くのは文法違反です(HTML5ではOKですがたぶん違いますよね)。
最後に、classがJSでは「orange」ですがHTMLでは「orenge」です。これは元ソースからのミスですか?もし手打ちで間違えている場合、回答者が困りますので、今度からは必ずコピペしてください。
さて本題です。
丸括弧を使うのは「関数に引数を渡すとき」だけだと覚えてください。
innerHTMLは「プロパティ」であり、それに値を設定するのですから、丸括弧は不要です。
また、classは同じものが複数存在しうるので、getElementByClassNameは単一の要素ではなくノードリストを返します。
ということで、HTMLのほうのclassを「orange」に直したとして、こうです。
document.getElementsByClassName("orange1")[0].innerHTML = '<a href="./item/?item=orange1">商品はコチラ</a>';
document.getElementsByClassName("orange2")[0].innerHTML = '<a href="./item/?item=orange2">商品はコチラ</a>';
document.getElementsByClassName("orange3")[0].innerHTML = '<a href="./item/?item=orange3">商品はコチラ</a>';
なお、本文のソースでは判断できませんが、もし「orange1」などがHTML内に複数存在することがない場合、それはclassの使用には適していません。idを使うか、もしくはidもクラスも付けないかにしましょう。
何も付けなくても取得方法はいくつもありますので。
No.1
- 回答日時:
まずgetElementsByClassName()は戻り値が配列形式になります
getElementsByClassName("orange1")[0]、などのようなアクセスの仕方をしてください
ただしブラウザによってぶれもあるためあまりお勧めしません。
そもそもクラス名でアクセスする場合、同じクラス名を複数のタグが共有していたり
ひとつのタグで複数のクラス名を持っていたりするため処理は煩雑になります
可能であればidで指定してやることをお勧めします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classList で、class名が付かな...
-
MAX関数を使ってからLEFT JOIN...
-
HTMLとJavaScriptで作ったタイ...
-
mapリンクとテキストスタイルの...
-
JSで動的にリンクを作成
-
IFRAMEの表示/非表示を切り替え...
-
java折りたたみタグを複数設置...
-
jQueryのアコーディオンメニュ...
-
クリッカブルマップを使いなが...
-
関数の引数を動的に変えたい
-
removeAttribute()メソッドで削...
-
表示・非表示のスクリプトで、...
-
jqueryのparentについて
-
VBScript+IEのチェックボック...
-
javascriptテキストBOX色を元に...
-
removeEventListenerについて
-
マウスカーソルを画像や文字に...
-
画像ランダム表示、しかしダブ...
-
新規ウインドウ+submit
-
JSPでの画像ファイル表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
IFRAMEの表示/非表示を切り替え...
-
removeEventListenerについて
-
背景色を透明化
-
createElementで作成した要素を...
-
javascriptでpostした値が取得...
-
読み込んだQRコードをフォーム...
-
iframe内のリンクが飛ばないの...
-
jQueryでクリックされた要素のi...
-
ダブルクォーテーションが消え...
-
<div ~ </div> で囲まれたテキ...
-
【HP作成】クリックすると下...
-
<Div>の中の要素の数を調べる
-
jQueryで特定id以外の下にある...
-
VBScript+IEのチェックボック...
-
removeAttribute()メソッドで削...
-
折りたたみ部分にアンカーでリ...
-
onclickを利用した伸縮メニュー...
-
背景色を一定時間ごとにランダ...
おすすめ情報