はじめまして。
Javascriptは初心者でわからないことがありましたので、どなたかお答えいただけないでしょうか?
MdNから出版されている、プロとして恥ずかしくないJavascriptの大原則の中で紹介されている「リンクにマウスオーバーするとポップアップで説明が表示される」を入力したのですが、まったく再現できません。
<link href="css/design.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css" media="all"><!--
.Help{
font-size:x-small;
background-color:#eee8aa; color:#6666ff;
position:absolute;
left:0px; top:0px;
padding:3px;
border-color:#003399; border:solid; border:1px;
}
//--></style>
<script type="text/javascript"><!--
function OnScreenHelp(x,y){
if(document.all){
document.getElementByld(strID).style.left = event.x + document.body.scrollLeft + 15;
document.getElementByld(strID).style.top = event.y + document.body.scrollTop + 0;
}else{
document.getElementByld(strID).style.left = x + 15;
document.getElementByld(strID).style.top = y + 0;
}
document.getElementByld(strID).style.display =";
}
function OffScreenHelp(){
document.getElementByld(strID).style.display='none';
strlD=";
}
//--></script>
</head>
<body>
<span class="Help" style="display:none; z-index:1000" id="About">会社概要をご紹介します</span>
<span class="Help" style="display:none; z-index:1000" id="products">最新情報を紹介します<img src="img/up.gif"></span>
<h1>
<a href="index.html" onMouseOver="strID='About'; OnScreenHelp(event.pageX,event.pageY);" onMouseOut="OffScreenHelp()">About</a>
</h1>
<h1>
<a href="index.html" onMouseOver="strID='Products'; OnScreenHelp(event.pageX.event.pageY);" onMouseOut="OffScreenHelp()">Products</a>
</h1>
</body>
この様に記述したのですがどこが間違っているのかわかりません。
仕事で使わなければならず非常に困っています。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title>Q3381972 TestCase 1</title>
<link href="css/design.css" rel="stylesheet" type="text/css" media="all">
<!-- 俺はコメントアウト嫌いなのでどうせなら外部ファイルに分ける -->
<!-- 今回は直すのが面倒なのでTransitional DTDで勘弁してください -->
<style type="text/css" media="all">
.Help{
font-size:x-small;
background-color:#eee8aa; color:#6666ff;
position:absolute;
left:0px; top:0px;
padding:3px;
border-color:#003399; border:solid; border:1px;
}
</style>
<script type="text/javascript">
var strID; /* 変数宣言ないと落ち着かない*/
function OnScreenHelp(x,y){
if(document.all){
document.getElementById(strID).style.left = event.x + document.body.scrollLeft + 15;
document.getElementById(strID).style.top = event.y + document.body.scrollTop + 0;
}else{
/*
Minefieldでしか確認してないが,各プロパティには単位が必要。IEの方の調査は他回答者に譲る。
alertで表示させて調べたがxやyは単位が付かないようだ
*/
document.getElementById(strID).style.left = x + 15 + "px" ;
document.getElementById(strID).style.top = y + 0 + "px";
}
document.getElementById(strID).style.display =""; /* 指摘のあった引用符を修正 */
}
function OffScreenHelp(){
document.getElementById(strID).style.display='none';
strlD=""; /* 指摘のあった引用符を修正 */
}
/* 何故かIdじゃなくてldになっているので修正。*/
</script>
</head>
<body>
<span class="Help" style="display:none; z-index:1000" id="About">会社概要をご紹介します</span>
<!--
XHTMLにおいては,idは大文字と小文字を区別する。HTMLは全て大文字として扱われるが,
ブラウザがフォローしている products→Products
-->
<span class="Help" style="display:none; z-index:1000" id="Products">最新情報を紹介します<img src="img/up.gif"></span>
<h1>
<a href="index.html" onMouseOver="strID='About'; OnScreenHelp(event.pageX,event.pageY);" onMouseOut="OffScreenHelp()">About</a>
</h1>
<h1>
<!-- ピリオドじゃなくてカンマ -->
<a href="index.html" onMouseOver="strID='Products'; OnScreenHelp(event.pageX,event.pageY);" onMouseOut="OffScreenHelp()">Products</a>
</h1>
</body>
</html>
No.3
- 回答日時:
こんちは。
ちょっと情報が少ないですかね。。。
とりあえず、本はちゃんと読みましたか??
>>OnScreenHelp(event.pageX,event.pageY)
「event」オブジェクトはIEでも存在しますが、「pageX」「pageY」プロパティは、IEでの動作は対応していないかと思います。
そもそも、開発の環境が、IEなのか、そのほかのブラウザなのかも分からないので明確な答えは出せないですが。。。
他には。。。
>>document.getElementByld(strID).style.display =";
↓
document.getElementByld(strID).style.display ="";
「"」2つです。
>>strlD=";
↓
strlD="";
ここも同じく。
後は、自分も、動作させられる環境が整っていないので判別できません。
この回答への補足
ご回答ありがとうございます。
環境はMacでSafariです。
「"」が抜けていたのは修正できましたが、まだ表示されません。
WindowsのIEでも再現できないとまずいんですが・・・。
No.2
- 回答日時:
こんばんは。
明らかに「これは?」という点だけを挙げてみます。
ご参考にしてください:
「 document.getElementByld(strID).style.display ="; 」
「 strlD="; 」
…ダブルクォーテーション( " )が1コだけなのは変ですね。
<a href="index.html" onMouseOver="strID='Products'; OnScreenHelp(event.pageX.event.pageY);" onMouseOut="OffScreenHelp()">Products</a>
…「 pageX 」と「 event 」の間のピリオド ( . ) は、正しくはカンマ ( , ) なのでは?
これで解決につながればいいのですが。
この回答への補足
ご回答ありがとうございます。
ダブルクォーテーション( " )が抜けていた部分と
>「 pageX 」と「 event 」の間のピリオド ( . ) は、正しくはカンマ ( , ) なのでは?
↑これも対処したのですが解決できません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
読み込んだQRコードをフォーム...
-
javascriptテキストBOX色を元に...
-
console.log結果をhtmlで表示し...
-
HTMLタグに複数のクラスを設定...
-
jqueryを使って無駄なspanタグ...
-
getElementByIdの戻り値がnull...
-
createElementで作成した要素を...
-
「リンクにマウスオーバーする...
-
jQueryを使ってランダムに表示
-
jQueryでシンプルドラッグドロ...
-
バッチファイルでカウントアッ...
-
【HTML5】【canvas】【js】...
-
複数のリンク画像を一定時間で...
-
jQueryで同じid属性が複数あっ...
-
外部ページからハッシュタグ(...
-
jQueryのアコーディオンメニュ...
-
ボタンを押せば、画面が切り替...
-
テキストエリア内の一部の文字...
-
計算結果の表示方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
クリックで色変更後に既に変更...
-
iframe内のリンクが飛ばないの...
-
[急ぎ] videoタグで埋め込んだm...
-
背景色を透明化
-
console.log結果をhtmlで表示し...
-
表示・非表示のスクリプトで、...
-
getElementByIdの戻り値がnull...
-
removeAttribute()メソッドで削...
-
テキストエリア内の一部の文字...
-
タブで開いてさらにタブ内をア...
-
IFRAMEの表示/非表示を切り替え...
-
変数内容をHTML内で表示する方法
-
HTMLタグに複数のクラスを設定...
-
jQueryのアコーディオンメニュ...
-
取得した要素がインライン要素...
おすすめ情報