Вход

Просмотр полной версии : Не срабатывает onclick="a()"


cubano
03.01.2021, 01:05
Здравствуйте !!!
Помогите пожалуйста!
Сразу хочу предупредить - мой уровень 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 и при клике не меняется.