• ベストアンサー

JavaScriptで反映させているテキスト部分をリンクにする方法

いつもお世話になっています! JavaScriptでの質問なのですが、 下記のように、JavaScriptを記載し、 HTML内にテキストが表示されるようにしています。 var SubImages = [ /* 0 Bullet Column */ [{ desc: 'Height: 83", Diameter (at base): 14"', img: '1.jpg' }, { desc: 'Shown in a possible setting', img: '3.jpg' }, { desc: 'Granite base', img: '6.jpg' }] function() { //Change description. $("DIV.image-desc").text(SubImages[MainPos][SubPos].desc); $("DIV.image-title").show(); $("DIV.image-desc").show(); } これでdesc:で指定したテキストがHTML内に書き出されているのですが、 テキストの中の一部分にリンクを付けたい、 という注文がはいりました・・・。 その場合、どのようにすればいいのでしょう? desc:内に直接HTMLで書き込んでも、反応しませんでした。 どなたかご存知の方、宜しくお願いします!!!

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.5

desc:内にHTMLが入ると、全てのJavaScriptが動作しなくなり、画像もDescriptionも表示されません(TдT) なら、 テキストの中に含めるHTMLタグを '<a href="//hoge.hoge/fuga.htm">Granite base</a>' と書く代わりに '$lt;a href=&quot;//hoge.hoge/fuga.htm&quot;&gt;Granite base$lt;/a&gt;' としてみたらどうです。 情報が小出しですが、 function ShowSubImage(n)は問題無い様に見受けられます。 前の画像をフェードアウトさせてn番目の画像をフェードインさせ、同時にタイトルと説明の<div>要素を書き換えているのですね。

mihomama84
質問者

お礼

度々本当にありがとうございます!!! どうやら、私の書き方で、 hogehoge<br><a href="hoge@hoge.com">hogehoge</a> となっており・・・。 この<br>を<br />とすることで解消したようです・・・。 本当にご迷惑をおかけしました!!! $ltで<  &gt;で> は初めてしました!! 勉強になりました。 ありがとうございます!

その他の回答 (5)

  • amane123
  • ベストアンサー率60% (6/10)
回答No.6

desc:内に直接HTMLで書き込んだ上で、 $("DIV.image-desc").text(SubImages[MainPos][SubPos].desc); ではなく、 $("DIV.image-desc").html(SubImages[MainPos][SubPos].desc); にすれば、<a>はリンクとして表示できます。

mihomama84
質問者

お礼

ご回答ありがとうございます!! どうやら、私の書き方で、 hogehoge<br><a href="hoge@hoge.com">hogehoge</a> となっており・・・。 この<br>を<br />とすることで解消したようです・・・。 本当にご迷惑をおかけしました!!! .textではなく、.htmlでもいけるのですね! 新たな発見です!! ありがとうございました!

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

書き間違え訂正 var SubImages = [ /* 0 Bullet Column */    [     { desc: 'Height: 83", Diameter (at base): 14"', img: '1.jpg' },     { desc: 'Shown in a possible setting', img: '3.jpg' },     { desc: '<a href="//hoge.hoge/fuga.htm">Granite base</a>', img: '6.jpg' }    ]    [ ......    ] ..繰り返し  ]; と定義があったら、 function() { //Change description. $("DIV.image-desc").text(SubImages[0][3].desc); $("DIV.image-title").show(); $("DIV.image-desc").show(); } ですね、配列変数SubImagesの中身は、 alert (SubImages[0][1].desc); // Height: 83", Diameter (at base): 14" alert (SubImages[0][1].img); // 1.jpg alert (SubImages[0][2].desc); // Shown in a possible setting alert (SubImages[0][2].img); // 3.jpg alert (SubImages[0][3].desc); // <a href="//hoge.hoge/fuga.htm">Granite base</a> alert (SubImages[0][3].img); // 6.jpg ............... とアクセス出来ます。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

No1回答者です。 もしBullet Columnのテキストにリンクを付けたいなら、 var SubImages = [ /* 0 Bullet Column */ [ { desc: 'Height: 83", Diameter (at base): 14"', img: '1.jpg' }, { desc: 'Shown in a possible setting', img: '3.jpg' }, { desc: '<a href="//hoge.hoge/fuga.htm">Granite base</a>', img: '6.jpg' } で function() { //Change description. $("DIV.image-desc").text(SubImages[0][3].desc); $("DIV.image-title").show(); $("DIV.image-desc").show(); } ] /* ...... */ ]; ですね、配列変数SubImagesの中身は、 alert (SubImages[0][1].desc); // Height: 83", Diameter (at base): 14" alert (SubImages[0][1].img); // 1.jpg alert (SubImages[0][2].desc); // Shown in a possible setting alert (SubImages[0][2].img); // 3.jpg alert (SubImages[0][3].desc); // <a href="//hoge.hoge/fuga.htm">Granite base</a> alert (SubImages[0][3].img); // 6.jpg ............... とアクセス出来ます。

mihomama84
質問者

補足

ご回答ありがとうございます!! ご察しの通り、使用しているのはJ-Queryで、そこに 独自のJavaScruptを組み合わせています。 早速上記の方法で試してみたのですが、 desc:内にHTMLが入ると、全てのJavaScriptが動作しなくなり、 画像もDescriptionも表示されません(TдT) 下記はJ-QueryのJavaScriptですが、ここに問題があるのでしょうか? function ShowSubImage(n) { if (n >= SubImages[MainPos].length) { return; } SubPos = n; ShowSubNo() $("DIV.image-title").hide(); $("DIV.image-desc").hide(); //Change the image using fade-out and fade-in effects. var img = $("#slideshow-adv span a"); img.fadeOut("fast", function() { img.empty(); img.append(SubImages[MainPos][SubPos].imageObj); img.fadeIn("fast", function() { //Change description. $("DIV.image-desc").text(SubImages[MainPos][SubPos].desc); $("DIV.image-title").show(); $("DIV.image-desc").show(); } ); } ); }

回答No.2

> $("DIV.image-desc").text() この書き方を提供しているライブラリに、innerTextまたはtextContentではなく、 innerHTMLを書き出すメソッドがあれば、それを使用してみてはいかがでしょうか。 その上で、 > SubImages[MainPos][SubPos].desc このプロパティにHTMLを書けば、そのままHTMLとして出力されると思います。 DOM的にはHTMLデータ(descプロパティを文字列として)を解析して、 テキストノード、A要素(と、それに内包するテキストノード)、テキストノードと1つ1つ生成して挿入するのがベストでしょうけど、 テンプレートエンジンでないと、そこまでするのは無理があると思います。

mihomama84
質問者

お礼

ご回答ありがとうございます! やはり1つ1つがベストですよね・・・。 今回はなんとかしのげたので、(私の盆ミスでした・・・。本当にご迷惑をお掛けしました!!) 時間のあるときにぜひ、個別に生成するようにします! 本当にありがとうございました!

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

提示されている情報が少ないですが、 function() { //Change description. $("DIV.image-desc").text(SubImages[MainPos][SubPos].desc); $("DIV.image-title").show(); $("DIV.image-desc").show(); } から察するに、prototype.js系jQuery等のライブラリーをお使いですね、 何のライブラリーでしょうか? $("DIV.image-desc")が要素のセレクターで、text()メソッドで値をセットしshow()メソッドで表示しているのでしょう。 SubImages[MainPos][SubPos]が表示させるテキストが格納されている配列変数です。 変数MainPosと変数SubPosには何が格納されてますか? 投稿されている var SubImages = [ /* 0 Bullet Column */ [{ desc: 'Height: 83", Diameter (at base): 14"', img: '1.jpg' }, { desc: 'Shown in a possible setting', img: '3.jpg' }, { desc: 'Granite base', img: '6.jpg' }] が構文的におかしいような気がするのですが、自分で書いたのですか? それともソースから適当に部分的にコピー貼り付けしただけですか? いずれにせよ、うまくいかないのは、文字列のクォテーションのエスケープ処理がまずいからか、{}[]の入れ子構文が間違っているからではないでしょうか?

関連するQ&A

  • JavaScriptにリンク設定は正しいですか

    サイト作成中です。(アップはしていません) JavaScriptを使いギャラリーを設置しました。 (下記記述) これにサムネイルクリックでジャンプ出来るよう最初の一枚を <a href="index.html"></a>で囲んでみました。 <a href="index.html"><img src="gallery/cate/g (1)-s.jpg" title="eyes0271 梅" alt="梅" onmouseover="document.BigPhoto.src='gallery/cate/g (1).jpg';"></a> ジャンプは出来ましたが、この記述で問題ありませんか? アップ後に JavaScriptに悪影響は及ぼしたりはしませんか? ご教授ねがいます。 HTML ------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="content-script-type" content="text/javascript"> <title></title> <meta name="description" content=""> <meta name="keywords" content=""> <link rel="stylesheet" href="css/gallery.css" type="text/css"> </head> <body> <div align="center"> <div id="gallery"> <div id="thumbs"> <a href="index.html"><img src="gallery/cate/g (1)-s.jpg" title="eyes0271 梅" alt="梅" onmouseover="document.BigPhoto.src='gallery/cate/g (1).jpg';"></a> <img src="gallery/cate/g (2)-s.jpg" title="eyes0272 桜" alt="桜" onmouseover="document.BigPhoto.src='gallery/cate/g (2).jpg';"> <img src="gallery/cate/g (3)-s.jpg" title="eyes0273 山" alt="山" onmouseover="document.BigPhoto.src='gallery/cate/g (3).jpg';"> <img src="gallery/cate/g (4)-s.jpg" title="eyes0274 川" alt="川" onmouseover="document.BigPhoto.src='gallery/cate/g (4).jpg';"> </div> <p><img src="gallery/cate/gallery.jpg" alt="表紙(デフォルト画像)" class="waku" name="BigPhoto"></p> </div> </div> </body> </html> ------------- CSS ------------- #gallery { width: 900px; height:280px; padding: 10px; background-color: #888888; } img.waku { display: block; width: auto; margin: 5px auto; } #thumbs { float: left; width: 270px; margin: 0; padding:0; } #thumbs img { width: 80px; height:60px; float: left; margin: 0 0 5px 5px; } よろしくお願いします。

  • JavaScriptでリンクを設定したい

    JavaScript超初心者です。 サイトで画像やテキストリンクが1ページにとても多く、 リンクアドレスも同一のものが数か所あります。 JavaScriptでリンクを設定すれば、リンクだらけにならないと聞いたので 使ってみようと思ったのですが、上手くいきません。 http://www.openspc2.org/reibun/javascript/link/020/ こちらのサイトを参考にやってみたのですが、 テキストリンク1カ所はできました。 でも、画像リンクはnullと表示されて画像も表示されなくなり、 2個目のテキストリンクはリンクになりません。 <a href="./aaa.html"><img src="./img/aaa.jpg" /></a> <a href="./aaa.html">あああ</a> <a href="./bbb.html"><img src="./img/bbb.jpg" /></a> <a href="./bbb.html">いいい</a> <a href="./aaa.html"><img src="./img/ccc.jpg" /></a> <a href="./aaa.html">ううう</a> このように表示されているリンクを JavaScriptでリンクを設定するにはどうしたらよいでしょうか? よろしくお願いします!

  • スライド部分のリンクが貼れない・・・

    トップページスライダー部分のリンクが貼れなくて困っています。 原因を探しているのですがわかりません・・・解る方教えてください。 スライド部分のHTML <div id="window"> <div id="slider"> <div class="slider-view"> <div class="slider-container"> <div><a href="#"><img src="http://blackartcard.com/slider1/images/sliderimg1.jpg" alt="" /></a></div> <div><a href="#"><img src="http://blackartcard.com/slider1/images/sliderimg2.jpg" alt="" /></a></div> <div><a href="/?p=542"><img src="http://blackartcard.com/slider1/images/sliderimg3.jpg" alt="" /></a></div> </div><!-- // .slider-container --> </div><!-- // .slider-view --> </div> </div>

    • ベストアンサー
    • CSS
  • javascript テキスト切り替え

    下記の様に<li>タグ内をクリックすると、クリックした内容が<p>タグ内に表示されて 切り替わるような動作をさせてたいのですが、jsの書き方がわかりません。 ご教授いただけますと助かります。よろしくお願いいたします (セレクトメニューのようなイメージです。) <body> <p><a><img src="1.jpg">テキスト1</a></p> <ul> <li></li> <li><a><img src="2.jpg">テキスト2</a></li> <li><a><img src="3.jpg">テキスト3</a></li> <li><a><img src="4.jpg">テキスト4</a></li> </ul> </body>

  • JavaScriptについて

    サイト作成中なのですが、JavaScriptのところでつまづいています。 ボタンをクリックすると別窓で画像が出てきて表示されるというJavaScriptを作ると、ボタンは表示されていたのですが、ボタンを押しても画像が表示されません。つまり押しても何も反応がありません。 恐らく画像の保存場所が違うのではないかとにらんでみたのですが見当違いかな?? タグは以下の通りです。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> function cl(){ popwin=window.open(",'img','width=150,height=150'); popwin.document.write('<IMG SRC="image3.jpg">'); } </SCRIPT> </BODY> クリックしてください。 <FROM> <INPUT type="button" VALUE="クリック" onClick="cl()"> </FROM> </BODY> </HTML> 私はここの部分で間違えてると思いました。 popwin.document.write('<IMG SRC="***.jpg">'); デスクトップに置いてるmyhomepageにimageというフォルダを置いてそこに画像を保存しています。 その場合、<IMG SRC="image/***.jpg">かなと思い実行してみましたがダメでした。。 JavaScriptのときは何か特別なファルダを作る必要が あるんでしょうか?? JavaScriptに関しては最近はじめたばかりでチンプン カンプンなのでわかりやすく説明していただけるとありがたいです。 ちなみに上記のタグは説明本通り記載しました。 よろしくお願いいたします。

  • テキストのリンクをON/OFFする

    Javascriptでテキストをクリックすると2箇所の画像を同時に変更することができたのですが、表示されている画像のテキストのリンクをはずす方法がわかりません。はじめは「ページ3+4」のテキストのみがクリッカブルで、「ページ3+4」のテキストをクリックすると、「ページ1+2」のテキストのみがクリッカブルになるようにしたいのです。表示されていない画像のテキストのみをクリッカブルにする方法をどなたか教えていただけますでしょうか? <script language="JavaScript"> <!-- function swapImg(imgfile1,imgfile2) { document.swpimg1.src = imgfile1; document.swpimg2.src = imgfile2; } // --> </script> <div><img src="sample1.gif" name="swpimg1" /><img src="sample2.gif" name="swpimg2" /></div> <div><a href="javascript:swapImg('sample1.gif','sample2.gif')">ページ1+2</a> <a href="javascript:swapImg('sample3.gif','sample4.gif')">ページ3+4</a></div>

  • javascriptに関しての質問です。

    javascriptに関しての質問です。 例えば、他サイトのページHTMLを読み込み、その一部分(画像ファイルのurl)だけを取得したいと思います。 ----------------- ★自サイトページ ~~~~ <div id="img"> ここに表示 </div> ~~~~ ★別ドメインサイト <head>~</head> <body> <p>あああ</p> <img src="file.jpg"> ←ここのアドレス部分のみを取得したい。 おおおおおおおおおお </body> ----------------- プログラムの知識・経験はありますが、javascriptの知識レベルとしては初心者です。 どのような方法&関数がありますでしょうか、よろしくご教授ください。

  • javascriptの記述について

    私は今javascriptを独学で勉強をしていて、勉強した範囲内で自分で作成してみようと思いjavascriptのプログラムを 書いています。 やりたいこととしては メイン画像があり、その下に三つボタンを作成し、 その三つのボタンのどれか一つにマウスを持っいくとメイン画像が切り替わるという javascriptを作成しています。 またその三つのボタンにはそれぞれメイン画像が切り替わるようにイベントをだしています。 html側 <body> <div id="image"> <img src="image/main-image.jpg" /> </div> <div id="bottonbox"> <div id="botton1"> <img src="image/staff01.png" /> </div> <div id="botton2"> <img src="image/staff01.png" /> </div> <div id="botton3"> <img src="image/staff01.png" /> </div> </body> javascript window.addEventListener('load',photo_change,false); function photo_change(event){ var elem = document.getElementById('botton1'); elem.addEventListener('mouseover',botton1,false); elem.document.getElementById('botton2'); elem.addEventListener('mouseover',botton2,false); elem.document.getElementById('botton3'); elem.addEventListener('mouseover',botton3,false); } function botton1(event){ var img_change = document.getElementById('image'); img_change.removeChild(img_change.firstChild); var img =document.createElement('img'); img.src = 'image/main-image2.png'; img_change.appendChild(img); } ※botton2,3はsrc=画像名だけが違うだけで、botton1関数と同じの為、省略します。 これを実行すると、もともとあるメイン画像がremoveされず、下に新しい画像が表示されてしまいます。 ブレークポイントをつけてトレースしたのですが、どうやらimg_change.removeChild(img_change.firstChild); でremoveされていないらしくなぜか二回目にremoveされます。 ですので、試しに function botton1(event){ var img_change = document.getElementById('image'); //removeChild二回やってみる img_change.removeChild(img_change.firstChild); img_change.removeChild(img_change.firstChild); var img =document.createElement('img'); img.src = 'image/main-image2.png'; img_change.appendChild(img); } こうするともともとあったメイン画像がremoveされ、botton1にマウスを載せた時に 表示させようとしていた画像がちゃんと表示されます。 ですが、なぜ一回のimg_change.removeChild(img_change.firstChild);では メイン画像をremoveできないのでしょうか。 どなたかわかる方おしえていただけますでしょうか。 また、どこが悪いのか、など解説も付け加えていただけると幸いです。

  • 背景リピート―反映されない

    背景をリピートしたいのですが、反映されません。 ~HTML~ <body> <div id="container"> <div id="about"> ここに背景をリピートさせたい。 </div> </div> </body> ~CSS~ #container #about  { background-image: url(img/○○.jpg); background-repeat:repeat-y; } これだけでは駄目なのでしょうか? 全くの無知で申し訳ありません。。

  • Javascriptのid⇔class変更?

    cssは少し勉強していますが、Javascriptは全くの無知のせいか、行き詰っております。 テンプレートに含まれていたJavascriptを使って、 写真の見せ方に効果を付けようとしているのですが、 同ページ内に複数設定出来ず困っています。 HTMLには <div id="zoom"> <img src="images/no1.jpg" alt="" title="sample" /> <img src="images/no2.jpg" alt="" title="sample" /> <img src="images/no3.jpg" alt="" title="sample" /> </div> 外部シートには $(document).ready(function(){ if ($("#zoom").length) { $('#zoom').cycle({ fx: 'zoom', sync: false, delay: -2000 }); } }); となっており、css同様『id』となっているせいか?と思い HTMLは id→class 外部シートは #→. と試しましたが、ぐちゃぐちゃになりました。 チェックするポイントが的外れかもしれませんが、ご教授頂けるとすごく助かります。 どなたかよろしくお願いします!

専門家に質問してみよう