質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

604閲覧

置換した文字それぞれに違ったclass名を割り当てたいです。

K.Mu

総合スコア3

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/05/13 10:15

前提・実現したいこと

配列にならって、文字を置換し、置換した文字それぞれにclass名とonmouseoverのfunction名を割り当てたい。

例)
kiiro

new_kiiroに置換
------------------------------ここまでは正常に作動
・class = "click2"
・onmouseover = "open_window2"
の要素を追加したい。

配列arr2のコードはそのままに、後付けでclass名等を指定する方法を探しています。

発生している問題・エラーメッセージ

//*〜//*内のプログラムが稼働しなく、class名とonmouseover要素が追加できません。
変数 i を用いたclass名が設定できません。

該当のソースコード

javascript

1//配列は大量にあることを想定 2 var arr1 = [ 3 4 /aka/g, 5 /ao/g, 6 /kiiro/g, 7 ]; 8 9 var arr2 = [ 10  "new_aka", 11 "new_blue2", 12 "new_yellow2", 13 ]; 14 15//id:outputの文章を、上記の配列にならって置換 16 $('#output').each(function(){ 17 for(var i=0, len=arr1.length; i<len; i++){ 18 var txt = $(this).html(); 19 $(this).html( 20 txt.replace(arr1[i], 21 '<a class = "click" + arr2[i] + '</a>') 22 ); 23 24//* 25 $(".click" + i).attr('onmouseover','open_window'+ i +'()'); 26 $(".click"+ i).addClass(".click" + i +1); 27 $(".click" + i).removeClass(""); 28//* 29 } 30 });; 31 32//下のような関数を設定し、マウスが乗ると、文字の色が背景色として出るようにしたい。 33function open_window0(){ 34 var elements = document.getElementsByClassName('.click0'); 35 for(e=0;e<elements.length;e++){ 36 elements[e].style.backgroundColor = "red" 37 } 38 39function open_window1(){ 40 var elements = document.getElementsByClassName('.click1'); 41 for(e=0;e<elements.length;e++){ 42 elements[e].style.backgroundColor = "blue" 43 } 44//・・・と続いていきます 45 46

試したこと

//*〜//*内を,、具体的な名前[.addClass(".click1")など]に設定した場合は稼働しましたが、iを用いて各Classの追加とonmouseoverのfunction名をつけることができませんでした。
attrやaddclassの()内に問題があると思うのですが、[i]を用いた命名の方法がわかりませんでした。

プログラミング初心者で、的外れなこともあるかもしれませんがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

引用符がないので引用符をつける必要があります。
また、clickにiを加えるのだと思いますがいかがでしょうか?

Javascript

1 txt.replace(arr1[i], 2 '<a class = "click'+i+'">' + arr2[i] + '</a>')

addClassの引数が「.click」になっていますが、ドットは不要だと思います。
「"click" + i +1」だと「click01」のようになりませんか?括弧が必要だと思います。

Javascript

1 $(".click"+ i).addClass("click" + (i +1));

投稿2020/05/13 10:46

etsuhisa

総合スコア416

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$(".click"+ i).addClass(".click" + i +1);で、+1としていることが原因かと思います。

あと、$(".click" + i).removeClass(""); は不要では?

投稿2020/05/13 10:42

satokei

総合スコア1217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問