Есть элемент 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>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости