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

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

ただいまの
回答率

88.57%

javascriptを使ってマウスオーバーで吹き出しを表示したい

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,526

MitMc

score 34

javascriptを使ってマウスオーバーで吹き出しを表示する方法を教えてください。

djangoでhtml上で{{form}}を呼び出して使っているので、javascriptでIDで指定して使える方法を探していますが、見当たりません。
「テストです」にカーソルを当てたら、吹き出しが表示され、「テストの内容です」と表示されるようにしたいです。

<input type="radio" name="test" value="テストです" required="" id="id_test">

試したこと

<script>
 var infoAry = "テストの内容です。"
            document.getElementById("id_test").innerHTML = infoAry
</script>


結果、何も反応しませんでした。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

Balloon.cssを試してみてはどうでしょうか?
ラジオボタンには反応するブラウザとそうでないものがあるようなので
labelタグで囲ってそれにメッセージを書いたほうがよいかもしれません

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/balloon-css/0.2.4/balloon.min.css">
<label data-balloon="テストの内容1です。" data-balloon-pos="down"><input type="radio" name="test" value="テストです">test1</label>
<input type="radio" name="test" value="テストです" data-balloon="テストの内容2です。" data-balloon-pos="down">test2
  • test1は多くのブラウザで可動する
  • test2はchrome以外はいまいち

 追記

jsが使えるなら、htmlを書き換えればよいのでは?

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/balloon-css/0.2.4/balloon.min.css">
<script>
window.addEventListener('DOMContentLoaded', function(e){
  var n=document.querySelector('#test_id');
  var l=document.createElement('label');
  l.setAttribute("data-balloon","テストの内容1です。");
  l.setAttribute("data-balloon-pos","down");
  n.parentNode.insertBefore(l,n);
  l.appendChild(n);
});
</script>
<input type="radio" name="test" value="テストです" id="test_id">

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/22 20:16

    貴重な情報をありがとうございます。
    確かに、使えそうなのですが、djangoを使っており、HTML上では{{form}}のみの記述なっています。
    ご案内いただいた内容だと、CSSではなく、HTMLに記述する内容になっていると思うのですが、HTMLの部分を個別にいじることができない場合、どのように記述したら良いでしょうか。
    form.py上には、
    test_list = [(test1,test1),(test2,test2), .......]
    test = forms.ChoiceField(label='test', choices=test_list ,required=False)

    のように記述しています。このtest1やtest2にそれぞれ設定をしたいと考えています。
    表示されるHTMLの構造はgoogleの懸賞で確認できるので、そのid等を指定して、CSSを設定することはできるのですが、HTMLの記述そのものを修正することはできません。
    このような場合、どうしたら良いでしょうか。

    キャンセル

  • 2018/10/22 20:17

    誤字訂正
    googleの懸賞 → googleの検証

    キャンセル

  • 2018/10/22 20:36

    HTMLが直接書き換えられないならjsで処理すればよいかと

    キャンセル

  • 2018/10/22 23:55

    ありがとうございます!
    上記コードを適用し、吹き出しが出ました。
    ただ、choicefieldの上記で指定したIDのチョイスフィールド(○)が常にオンの状態になり、チョイスが2つ選択できてしまう状態になりました。(元々は1つしか選べなかったのですが、上記のコードで指定したIDのチョイスにチェックが入った状態のまま、別のチョイスが選択できてしまう状態になりました。)
    何が原因でしょうか?

    キャンセル

0

いろいろ間違ってると思います。

そのソースの通りだと、
HTMLが読み込まれる前にscriptが実行されると document.getElementById("id_test") では何も取得できずエラーになり、

うまくHTMLが読み込まれた後にscriptが実行できたとしても、innerHTMLを使っているので以下のような謎のHTMLになり、見た目にも何も起きていないように見えます。
<input type="radio" name="test" value="テストです" required="" id="id_test">テストの内容です。</input>

まず「吹き出し」とはどうなればよいことなのかもうちょっと考えたほうが良いと思います。

title属性で title="テストの内容です。" をつければたいていのブラウザはツールチップを出してくれますが、それが期待した動作なのか、もっと違うものを期待しているのか、質問からはわかりませんでした。

もっと違うものの例) https://atomiks.github.io/tippyjs/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.57%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る