Показать сообщение отдельно
  #3 (permalink)  
Старый 14.02.2018, 01:19
Новичок на форуме
Отправить личное сообщение для BOCbMOU Посмотреть профиль Найти все сообщения от BOCbMOU
 
Регистрация: 14.02.2018
Сообщений: 4

Сообщение от j0hnik Посмотреть сообщение
в корне неправильный подход.
во первых хорошим тоном считается не встраивать в html теги обработчики, а так чтобы вешать через setAttribute вижу впервые.

напишите что хотите сделать, подскажем как будет правильно.
В данном случае эвенты могу вешать только на g элементы, поскольку у меня svg поле с g элементами, в которых polygon и text.

А что надо... В целом, я уже выше всё описал, да и не важно куда эвент вешать, проблема актуальна на любом элементе будет.
В общем, всё, что мне надо, это при добавлении эвента элементу, передать в него значение переменной, а не название переменной, дабы при срабатывании эвента в функцию (в моём случае) передавалось сразу готовое значение, а не пустое значение необъявленной переменной (в пределах эвента).

Короче, если мы используем этот способ:
g.onclick = function () { faunaAdd(scale); };

то получаем следующий эвент:
function () { faunaAdd(scale); };

А если используем тот костыль, до которого я дошёл:
g.setAttribute("onclick", "faunaAdd(" + scale + ");");

то получаем на выходе следующее: ( scale = 0.3; )
function () { faunaAdd(0.3); };

И вот мне надо получить последнее, но нормальными путями, если это возможно, конечно же.

П.с.: ещё уточню, что это новый элемент:
var g = document.createElementNS("http://www.w3.org/2000/svg", "g");

Последний раз редактировалось BOCbMOU, 14.02.2018 в 01:22.
Ответить с цитированием