Получить элемент по идентификатору проблемы? - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь добавить изображение в поле с помощью команды onclick.Но я не понимаю, почему это не работает.

Любая помощь будет принята с благодарностью!Вот код:

<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>

Ответы [ 2 ]

2 голосов
/ 23 января 2012

getElementById не имеет более 1 аргумента

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

Также ваш обработчик событий IE вызывает метод из String.

elem.onclick = function(){
  fadeIn(this, 400 );
  return false;
};
0 голосов
/ 23 января 2012

Я думаю, что вы делаете две ошибки в этом первом фрагменте кода:

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

Прежде всего:

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

неверно, потому что функция getElementById просто принимаетодин параметр.Если вы хотите получить два элемента, вы должны использовать два разных вызова:

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

Во-вторых, что это?

"img".onclick = function(){

Я думаю, вы имели в виду это:

elem.onclick = function(){

Что с первым исправлением становится:

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

    box.onclick = function(){
      fadeIn( "box", 400 );
      this.onclick = null;
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...