Почему функция не видит переменную?
Снизу часть кода, который должен парсить сообщения с телеграмм канала, но он почему-то не видит переменную i,
for(let i = 2; i<=19; i++) { let arr = await page.evaluate(() => { let text = document.querySelector(`body > main > div > section > div:nth-child(${i})`).innerText return text }) console.log(arr) } |
for(let i = 2; i<=19; i++) { let arr = await page.evaluate(() => { let text = document.querySelector(`body > main > div > section > div:nth-child(${i})`).innerText return text }) console.log(arr) }
Вот ошибка:
Error [ReferenceError]: i is not defined
Дополнительно:
скорее всего это происходит потому что сам цикл не является асинхронным, и он не ждет выполнения await. Нужен рефакторинг.
r_e_n_y, насколько ты уверен в том, что ошибка именно в данном куске кода?
Проблема в том, что переменная i из цикла for не видна внутри page.evaluate(). Чтобы это исправить, передайте i как аргумент в page.evaluate(), например:
for(let i = 2; i <= 19; i++) { let arr = await page.evaluate((index) => { let text = document.querySelector(`body > main > div > section > div:nth-child(${index})`).innerText; return text; }, i); console.log(arr); } |
for(let i = 2; i <= 19; i++) { let arr = await page.evaluate((index) => { let text = document.querySelector(`body > main > div > section > div:nth-child(${index})`).innerText; return text; }, i); console.log(arr); }
- Спасибо
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема, когда функция не видит переменную, может возникать по разным причинам. Вот несколько возможных причин и способы их решения:
1. Область видимости переменной: В PHP существует концепция области видимости переменных. Если переменная объявлена вне функции, она не будет видна внутри функции, если не передать ее как аргумент функции или не использовать global ключевое слово. Вот пример:
$variable = "Hello"; function myFunction() { echo $variable; // Ошибка: переменная $variable не видна внутри функции } myFunction();
Для исправления этой проблемы можно передать переменную как аргумент функции:
$variable = "Hello"; function myFunction($var) { echo $var; // Выведет "Hello" } myFunction($variable);
2. Использование global: Если переменная должна быть доступна внутри функции, можно использовать ключевое слово global:
$variable = "Hello"; function myFunction() { global $variable; echo $variable; // Выведет "Hello" } myFunction();
3. Ошибки при передаче параметров: Иногда проблема может быть связана с неправильной передачей параметров в функцию. Убедитесь, что правильные аргументы передаются в функцию:
function myFunction($var) { echo $var; } $variable = "Hello"; myFunction($variable); // Выведет "Hello"
4. Использование статических переменных: Если вы используете статические переменные в функции, убедитесь, что они объявлены правильно:
function myFunction() { static $count = 0; $count++; echo $count; } myFunction(); // Выведет "1" myFunction(); // Выведет "2"
Надеюсь, что эти советы помогут вам решить проблему, когда функция не видит переменную в PHP.