Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не срабатывает onclick="a()" (https://javascript.ru/forum/events/81639-ne-srabatyvaet-onclick%3D.html)

cubano 03.01.2021 01:05

Не срабатывает onclick="a()"
 
Здравствуйте !!!
Помогите пожалуйста!
Сразу хочу предупредить - мой уровень js оч близок "копипаст".

Функция срабатывает при загрузке страницы, а мне нужно чтобы при нажатии на кнопку.

function a() {
          viewPortWidth =520;
         }



Вот код:

<html lang="">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    <title>KeyS</title>

    <script type="text/javascript" src="index/files/KeyS.js"></script>
    <script type="text/javascript">
      
        var keys;

      function initKeyS() {
        var nameOfDiv = "KeyS";
        var viewPortWidth = 1920;
        
     a()
        function a() {
          viewPortWidth =520;
          alert( x);
      }
     
        keys = new keys(nameOfDiv,viewPortWidth);
      }
      window.onload = initKeyS;
	  </script>
    </head>

    <body oncontextmenu="return false;">
  
     <button id="btn"  onclick="a()">ИЗМЕНИТЬ</button>
     <div id="KeyS"></div>

    </body>
    </html>

Aetae 03.01.2021 01:50

<html lang="">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    <title>KeyS</title>

    <script type="text/javascript" src="index/files/KeyS.js"></script>
    <script type="text/javascript">
          var keys, x = 1;

          function initKeyS() {
            var nameOfDiv = "KeyS";
            var viewPortWidth = 1920;

            document.getElementById('btn').onclick = a;
            function a() {
              viewPortWidth =520;
              alert( x);
            }

            keys = new keys(nameOfDiv,viewPortWidth);
          }
          window.onload = initKeyS;
	</script>
    </head>

    <body oncontextmenu="return false;">
  
     <button id="btn">ИЗМЕНИТЬ</button>
     <div id="KeyS"></div>

    </body>
    </html>

Функция a создаётся внутри функции initKeyS, потому она недоступна глобально.

cubano 03.01.2021 10:34

СПАСИБО ЗА ПОМОЩЬ !!!
 
БОЛЬШОЕ СПАСИБО !!!
Теперь функция a() срабатывает при нажатии кнопки а не сразу при загрузке страницы.

Но, я правильно понял !?
Я не могу изменить значение переменной
var viewPortWidth=1920;

функции
function initKeyS()
из функции
a();
при нажатии кнопки ?

Aetae 03.01.2021 14:36

Можешь. И меняешь. Но только внутри функции.
Примитивные значения в js копируются при передаче, а не передаются по ссылке. Соответственно new keys имеет то значение которые было на момент onload и при клике не меняется.


Часовой пояс GMT +3, время: 01:28.