2012-01-23 8 views
-1

onclickコマンドで画像を使用してボックスをフェードインしようとしています。しかし、私はなぜそれが動作していないとして失われています。idの問題で要素を取得しますか?

ご協力いただければ幸いです!ここでは、コードは次のとおりです。

<style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
    #box { background:#999; width:500px; height:500px;opacity:0; } 
</style> 
</head> 

    <div id="box"><id="box"></div> 
    <div id="img"><img src="img.png" width="37" height="28" id="img"></div> 


<script> 
    var elem = document.getElementById("img","box"); 
    // attach event handler 
    "img".onclick = function(){ 
     fadeIn("img", 400); 
     this.onclick = null; 
    }; 

    function setOpacity(obj, value) { 
     if (obj) { 
     obj.style.opacity = value/100; 
     obj.style.filter = 'alpha(opacity=' + value + ')'; 
     obj.style.zoom = 1; 
     } 
    } 

    // makes an element to fade in 
    function fadeIn(dom, interval, delay) { 

      interval = interval || 1000; 
      delay  = delay || 10; 

     var opacity = 0, 
      start  = Number(new Date()), 
      op_per_ms = 100/interval; 

     if (typeof dom === "string") { 
     dom = document.getElementById(dom); 
     } 

     function step() { 

     var now  = Number(new Date()), 
      elapsed = now - start; 
      opacity = elapsed * op_per_ms; 

     setOpacity(dom, opacity); 

     if (elapsed < interval) 
      setTimeout(step, delay); 
     else 
      setOpacity(dom, 100); 
     } 

     setTimeout(step, delay); 
    } 

</script> 
+1

[jQueryの](http://jquery.com/は)そんなに簡単です。要素をフェードインするには '$( '#someElement').fadeIn()'を使うだけです。できる場合は、このようなアニメーションにjQueryを使用することをお勧めします。そして、ところで、 ''は有効ではありませんHTML、 '" img ".onclick'は何ですか?あなたは 'elem'変数の全体のポイントとなる' elem.onclick'をすることになっています。 – Nathan

+2

さて、ここでは多くの問題があります。まず、 ''は有効なHTMLではありません。 getElementByIdはidという1つのパラメータのみをとります。 – mowwwalker

+0

'new Date()。getTime()'または '+ new Date()'は、ちょうど 'Number(new Date()) 'を使用するのと同様に機能します。次に、あなたは要素にではなく文字列に "イベントハンドラを添付"しています。 – Ryan

答えて

2

getElementByIdをもあなたのIEのイベントハンドラは、文字列からメソッドを呼び出している以上1つの引数

var elem = document.getElementById("img"); 
var elem2 = document.getElementById("box"); 

を持っていません。

elem.onclick = function(){ 
    fadeIn(this, 400); 
    return false; 
}; 
+0

みなさん、助けてくれてありがとう!今私はそれをもっと理解しています。ありがとうございました。 – user1164109

0

私はあなたがこのコードの最初の作品の中に2つのエラーを作っていると思う:すべての

<script> 
    var elem = document.getElementById("img","box"); 
    // attach event handler 
    "img".onclick = function(){ 
     fadeIn("img", 400); 
     this.onclick = null; 
    }; 

まず:機能getElementByIdはただ一つのパラメータを取りますので

var elem = document.getElementById("img","box"); 

が間違っています。 2つの要素を取得する場合は、2種類の呼び出しを使用する必要があります。

var img = document.getElementById("img"); 
var box = document.getElementById("box"); 

第2に、これは何ですか?

"img".onclick = function(){ 

私はあなたがこれを意味だと思う:

elem.onclick = function(){ 

第一の補正となること:

img.onclick = function(){ 
     fadeIn("img", 400); 
     this.onclick = null; 
    }; 

    box.onclick = function(){ 
     fadeIn("box", 400); 
     this.onclick = null; 
    }; 
関連する問題