Есть элемент li
По нажатию на него, я хочу получить текст, т.е. "2"
Однако переменная page - пустая
Что я делаю не так?
P.S. Я думаю это не важно, но элемент li добавляется динамически...
Контекст кода, который находится непосредственно в атрибуте onclick
- элемент, чей атрибут. Но когда Вы вызываете там функцию clicki()
, это происходит в глобальном контексте. Так что this
внутри функции - это window
.
Передавайте элемент в функцию как параметр:
function clicki(el) {
var page = $(el).text();
console.log(page);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li onclick="clicki(this)">1</li>
<li onclick="clicki(this)">2</li>
<li onclick="clicki(this)">3</li>
</ul>
или используйте Function.prototype.call
:
function clicki() {
var page = $(this).text();
console.log(page);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li onclick="clicki.call(this)">1</li>
<li onclick="clicki.call(this)">2</li>
<li onclick="clicki.call(this)">3</li>
</ul>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Это мой первый скрипт, поэтому скорее всего тут куча идиотских решенийЕго задача: открыть спрятанное меню при клике, затемнить некоторые...
У меня такая проблемаЕсть JS который воспроизводит аудио на сайте и везде не работает, если пользователь заходит с iPhone
Есть у тега input атрибут autocomplete, вот по нему докиhttps://html
в leaflet js отображается на карте маркер при нажатии на него открывается bindPopup(popup)