1

画像をクリックしてjavascriptを呼び出そうとしていますが、うまくいきません。
私のコードについては以下を参照してください。

Javascript

<script type="text/javascript">
<!--
var image1=new Image()
image1.src="images/Image_1.png"
var image2=new Image()
image2.src="images/Image_2.png"
var image3=new Image()
image3.src="images/Image_3.png"
//-->

  function login(showhide){
    if(showhide == "show"){
        document.getElementById('popupbox').style.visibility="visible";
    }else if(showhide == "hide"){
        document.getElementById('popupbox').style.visibility="hidden"; 
    }
  }
  </script>

私のコード

<div id="apDiv21"><img src="images/Login_OnOut.png" width="71" height="44" 
onmouseover="this.src='images/Login_OnRollover.png'" 
  onmouseout="this.src='images/Login_OnOut.png'" onclick="login('show');" />

  <div id="popupbox"> 
<form name="login" action="" method="post" style="background-color:#C7C7C7">
<center>Username:</center>
<center><input name="username" size="14" /></center>
<center>Password:</center>
<center><input name="password" type="password" size="14" /></center>
<center><input type="submit" name="submit" value="login" /></center>
</form>
<center><a href="login('hide');">close</a></center> 
</div> 
4

2 に答える 2

1

タグname="login"から属性を削除します。JavaScript インタープリターが関数ではなくフォームノードを参照するものとしてform名前を取得するように、名前空間を汚染するようになりました。login(Firefox コンソールのエラー メッセージには、この理由から「ログインは関数ではありません」と表示されます。) – 別の方法として、フォームの名前を変更することもできますが、通常name、フォームの属性は必要ありません。

PS質問に対して行った編集は間違っていました。クリック可能なテキストの正しいマークアップは<a onclick="login('hide');">close</a>(ただし、使いやすさのためには、ボタンを使用する方がよいでしょう)。

于 2012-05-14T09:00:05.470 に答える
1

私が作成したこの JSFiddle をチェックしてください。

http://jsfiddle.net/Q5asp/

下部のリンクを適切に非表示に変更しました。問題はLogin('show')、同じ名前だったため、使用したときにフォームにアクセスしようとしたことでした。関数名と名前が競合しないようにする必要があります。

于 2012-05-14T08:25:59.507 に答える