За последние 24 часа нас посетили 18758 программистов и 1672 робота. Сейчас ищут 1728 программистов ...

javascript

Тема в разделе "JavaScript и AJAX", создана пользователем Sinevik, 21 май 2017.

  1. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    Код (Javascript):
    1. <! DOCTYPE HTML>
    2.  
    3. <html>
    4.  
    5. <head>
    6. <title>js</title>
    7.   <meta charset="UTF-8">
    8.   <script type="text/javascript">
    9.   var data = "";
    10.   var data1 = "";
    11.   function buttonClick () {
    12.      data = document.getElementById("1").value;
    13.      return data;
    14.   }
    15.   console.log(data);
    16.  
    17.  
    18.  
    19.   </script>
    20. </head>
    21. <body>
    22. <input id = "1" type=«text»></input>
    23. <input id = "2" type=«text»></input>
    24. <input type="submit" value="Добавить" name="button" onclick="buttonClick (this) ">
    25. </body>
    26. </html>
    Подскажите, как мне сделать что бы при нажатии кнопки добавить, данные из поля id = 1 записались в переменную data, и переменной можно было пользоваться за пределами функции. Потому что console.log(data) работает только внутри функции
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    HTML:
    1. <! DOCTYPE HTML>
    2.     <title>js</title>
    3.     <meta charset="UTF-8"/>
    4.     <script type="text/javascript">
    5.     var data = '';
    6.  
    7.     function buttonClick()
    8.     {
    9.         data = document.getElementById('1').value;
    10.         console.log(data);
    11.         return data;
    12.     }
    13.     </script>
    14. </head>
    15. <input id = "1" type="text"></input>
    16. <input id = "2" type="text"></input>
    17. <input type="button" value="Добавить" name="button" onclick="buttonClick()">
    18. </body>
    19. </html>
    Даже писать в чем ошибка была "были" лень. Возьми и скопируй.
     
    Sinevik нравится это.
  3. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    Так а чем ваш код от моего отличается? datой за пределами функции я всё равно пользоваться не могу? Как мне теперь использовать data за пределами функции?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Можете, почему нет-то? Вы объявили переменную в глобальной области видимости. Другое дело, что вы console.log(data) поставили вне функции. И оно срабатывает во время отработки содержимого тега script. И выводит пустую data. Но после кликов, в data добавляется инфа и остается там.

    А еще у вас ошибки в верстке. Закрывающий </input> не нужен.
     
    Sinevik нравится это.
  5. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    А как запустить console.log после отработки скрипта что бы видеть изменения?

    Код (Javascript):
    1. if(data != undefined) {
    2.       console.log(data);
    3.     }
     
    #5 Sinevik, 22 май 2017
    Последнее редактирование: 22 май 2017
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Поместить ее вызов в функцию, чтобы она отрабатывала при каждом вызове функции же. Это именно то, что @MouseZver сделал.
     
  7. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    я понимаю. я к тому что за пределами функции я это никак не сделаю? мне просто этот момент интересен?
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    Код (Javascript):
    1. <! DOCTYPE HTML>
    2. <html>
    3. <head>
    4.     <title>js</title>
    5.     <meta charset="UTF-8"/>
    6.     <script type="text/javascript">
    7.     var data = '';
    8.     function SetClick()
    9.     {
    10.         data = document.getElementById('1').value;
    11.         console.log(data);
    12.     }
    13.     function GetClick()
    14.     {
    15.         document.getElementById('2').value = data;
    16.     }
    17.     </script>
    18. </head>
    19. <body>
    20. <input id="1" type="text"/>
    21. <input id="2" type="text"/>
    22. <input type="button" value="Добавить" onclick="SetClick()"/>
    23. <input type="button" value="Заценить" onclick="GetClick()"/>
    24. </body>
    25. </html>
    js отличается функционалом от php. В php такое не канает.
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    О чем речь вообще? Код в теге script выполняется сверху вниз, как есть. После этого он все. Он отработал. Если вызывать функции, которые в нем были объявлены, они будут работать. Но это функции. Они вызывают свой код. А не код снаружи.

    Любой язык так работает.

    Если нужна метафора, то вы хотите ложкой серпать суп, но так, чтоб ложку в рот класть, а суп во рту должен быть не из ложки, а из миски. Но и в ложке он тоже должен быть. Просто и тот и тот нужен. Но ипользуем только ложку.

    Звучит немного бредово. И именно так мне видится ваш вопрос.

    Что именно ты имеешь ввиду? Вроде ничего сврхъестественного у тебя не происходит в коде.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. $data = 1;
    4.  
    5. function tratata()
    6. { return $data; }
    7.  
    8. echo tratata();
    вызовет ошибочку
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну потому что по дефолту функция будет искать переменную внутри себя. Если прописать global, то проблема отпадет сама собой.
    Но вообще, геттеры и сеттеры - это тема про ООП. В процедурном контексте же, речь может идти либо о глобальной переменной, либо о переменной в статичном реестре.

    В JS, в данном случае, то же самое. Просто не нужно писать global. Если переменная не найдена в текущем скоупе, она автоматом ищется в вышестоящем. И так далее, пока не дойдем до глобального. А в пыхе нужно. Это не особенность JS, это особенность пыхи :)
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    я сам до этого не знал что js может сохранять данные в переменных, как php в ООП в дальнейшем возвращаясь к ней и дергать, например self::$INSTANCE
    PHP:
    1. Class SQL
    2. {
    3.     const HOST = '';
    4.     const DB_NAME = '';
    5.     const USER = '';
    6.     const PASSWORD = '';
    7.     protected static $INSTANCE = NULL;
    8.  
    9.     public static function instance()
    10.     {
    11.         if ( self::$INSTANCE === NULL )
    12.         {
    13.             self::$INSTANCE = new PDO( 'mysql:host=' . self::HOST . ';dbname=' . self::DB_NAME . ';charset=utf8', self::USER, self::PASSWORD );
    14.             self::$INSTANCE -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    15.         }
    16.      
    17.         return self::$INSTANCE;
    18.     }
    19.     public ...