Передача двух значений в функцию

266
01 февраля 2018, 17:21

Хочу по клике на ссылку передать два значения в функцию, делаю так:

onclick="gov('.$id.', "info")

при клике получаю ошибку в консоле хрома: Uncaught ReferenceError: info is not defined at HTMLAnchorElement.onclick

Функция: function gov(id, type) { ... }

при передачи одного значения все работает. В чем может быть проблема?

UPD. Заметил что если вторым значением передавать цифру - все работает, а с текстом нет

Answer 1

В зависимости от того, чем является info. Если просто строкой, значит надо писать либо так

onclick="gov('.$id.', 'info')"

либо экранировать двойные кавычки

onclick="gov('.$id.', \"info\")"

в одинарные нельзя, потому что это ссылка в echo '<a ...>';

Значит надо работать с экранированием внутри вывода строки в PHP:

<?php
$id = 10;
echo '<a href="#" onclick="gov('.$id.', \'infoHello\')">click me</a>'
?>
<script>
function gov(id, type) {
    alert(id + ', ' + type);
}
</script>
Answer 2

Так не надо делать

echo '<a href="" onclick="gov('.$id.', \'info\')">';

Поскольку у вас есть jQuery, можно сделать, например, так:

$params = htmlspecialchars(json_encode(array('id' => $id, 'type' => 'info')));
echo '<a href="" data-params="' . $params . '">';

Дальше в <script>

$('[data-params]').on('click', function(e) {
    var params = $(this).data('params');
    gov(params.id, params.type);
}
READ ALSO
bootstrap-datapicker не открывается с первого раза jquery + input

bootstrap-datapicker не открывается с первого раза jquery + input

Всем привет) прошу помощиЕсть баг

300
beforeunload, как отменить реакцию на нажатие кнопки submit?

beforeunload, как отменить реакцию на нажатие кнопки submit?

Подскажите как решить данный вопрос или сделать аналогНа странице заносятся данные и происходит резервирование алиасов с записью их в БД

315
Передача данных с полей страницы [требует правки]

Передача данных с полей страницы [требует правки]

Существует форма допустим состоящее с

297
Не работает маска ввода

Не работает маска ввода

Есть некий select, от выбора которого зависит какие 2 инпута будут выведены

329