базовые объекты / функции javascript

#javascript

#javascript

Вопрос:

я пытался вывести предупреждение при нажатии на div, на самом деле это не удалось, я немного перепутал его, чтобы попрактиковаться с объектами.

вот код :

 <!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      var mine = {
        var start = {
          modeBox : function(){
            alert();
          }
        }
  }
    </script>
  </head>
  <body>
      <div id="askMode" onclick="mine.start.modeBox();">My mine</div>
    </body>
</html>
  

проблема: не оповещение

почему я не получаю оповещение при нажатии на div? живой пример: http://jsfiddle.net/YqP93 /

Комментарии:

1. Посмотрите на консоль, и вы увидите, что вы получаете синтаксическую ошибку. Узнайте об основах JavaScript и особенно о том, как отлаживать код JavaScript.

Ответ №1:

Следующий код протестирован в Firefox и Chrome:

 <!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      var mine = {
        start: {
          modeBox : function(){
            alert('Test');
          }
        }
  }
    </script>
  </head>
  <body>
      <div id="askMode" onclick="mine.start.modeBox();">My mine</div>
    </body>
</html>
  

ПРИМЕЧАНИЕ: код, который вы опубликовали в jsfiddle, не работает, но вы можете скопировать и вставить приведенный выше код, который работает в упомянутых браузерах.

Ответ №2:

       this.mine = {
        start: {
          modeBox : function(){
            alert();
          }
        }
  

вы пытаетесь объявить переменную в литерале объекта. Я не думаю, что это допустимый js для одного, но, что более важно, вы не можете получить доступ к переменным, объявленным в этой области. Вы должны присвоить свойство объекту. У вас все было правильно с modeBox.

Комментарии:

1. Похоже, что «var mine» также выходит за рамки при попытке получить к нему доступ из события onclick. Вам нужно сделать this.mine, чтобы привязать его к глобальной области видимости. Я обновил свой ответ, чтобы отразить это.

Ответ №3:

Избавьтесь от var замедления (почему?):

 mine = {
    start: {
        modeBox: function() {
          alert();
        }
    }
};
  

Демонстрация: http://jsfiddle.net/YqP93/3 /

Ответ №4:

попробуйте это

 <!DOCTYPE html>
  <html>
  <head>
    <script type="text/javascript">
      var mine = {
        start: {
          modeBox: function(){
            alert();
          }
        }
  }
    </script>
  </head>
  <body>
      <div id="askMode" onclick="mine.start.modeBox();">My mine</div>
    </body>
</html>
  

Комментарии:

1. Ответ очень неправильный и все еще в порядке. Это подрывает надежность StackOverflow!