Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143

Как решить ошибку: TypeError: itog2 is null?

06.01.2020, 18:47. Показов 1049. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Помогите бестолковому, читаю манул и догнать не могу(( как решить ошибку: TypeError: itog2 is null
Есть вот такой вот кусок скрипта:

JavaScript
1
2
3
4
5
    var result2 = pd789Element.innerText;
    var smalltext2 = result2.toLowerCase();
    var exp = /([а-я]*)/gi;
    var itog2 = smalltext2.match(exp);
        itog2.forEach(function(value2, index, array){});
Ну думаю, если itog2 есть ноль, т.е. нет никакого текста, то значит надо написать условие, пишу следующее:

JavaScript
1
2
3
if (itog2 != 'null') {
            itog2.forEach(function(value2, index, array){});
                            }
По идее, если не ноль, то записывай, если равен нулю, то переходим к следующему. Но нет же, не идет, пишет is null.
Пытался присвоить в else чего-нибудь, опять ошибку выдает, потому что из таких как itog2.forEach (их там много itog'ов)
клеется все в массив, понятно, что если тип равен null, то и писать сюда не чего:

JavaScript
1
var c = Array.of(...new Set(Array.of(...itog, ...itog2, ...itog3, ...itog4)));
И как исправить? Не догоняю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2020, 18:47
Ответы с готовыми решениями:

TypeError: Cannot read property 'style' of null
Уважаемые! У меня проблема. Никак не могу привыкнуть к странностям JS. Вот код и почему-то он не хочет работать. var w=screen.width; ...

Uncaught TypeError: Cannot read property 'className' of null
var ex = document.getElementById("exchanges"); var end = document.getElementById("end"); var re = document.getElementById("request"); ...

Uncaught TypeError: Cannot read property 'addEventListener' of null
Приветствую всех, такая проблема: Пишу небольшой калькулятор стоимости определённого продукта. На первой странице висят обработчики на...

19
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 19:01
arzobispo,
1. В JS null это не ноль, а литерал примитива, который является единственным представителем своего типа и означает отсутствие значения. Как и undefined - тоже литерал примитива, тоже единственный представитель своего типа, но означает, что переменная\ссылка получившее это значение не была определена(то есть кодер\программист не объявил её в той области видимости, с которой к ней обратились).

2. Смотрю на код
JavaScript
1
2
3
4
5
    var result2 = pd789Element.innerText;
    var smalltext2 = result2.toLowerCase();
    var exp = /([а-я]*)/gi;
    var itog2 = smalltext2.match(exp);
        itog2.forEach(function(value2, index, array){});
сразу вопрос - что есть pd789Element ? для этого уч-ка эта сущность не определена. Предоставьте пожалуйста минимальный пример, демонстрирующий Вашу проблему.

3. Объясните пожалуйста, что именно Вы хотите сделать.
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 19:15  [ТС]
Это определение блока из которого берется текст:
JavaScript
1
var pd789Element = document.getElementById("pd789");
И дальше проверяется в exp и пиштся в forEach, в финале все записывается в var c = Array.of

Добавлено через 3 минуты
Вот он весь код:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
 
    var pd789Element = document.getElementById("pd789");
    
    var result = pd789Element.innerText;
    var smalltext = result.toLowerCase();
    var exp = /(([а-я]*)\d+)/gi;
    var itog = smalltext.match(exp);
        itog.forEach(function(value, index, array){});
        
    var result2 = pd789Element.innerText;
    var smalltext2 = result2.toLowerCase();
    var exp = /([а-я]*)/gi;
    var itog2 = smalltext2.match(exp);
        itog2.forEach(function(value2, index, array){});
        
    var result3 = pd789Element.innerText;
    var smalltext3 = result3.toLowerCase();
    var exp = /([a-z]*)/gi;
    var itog3 = smalltext3.match(exp);
        itog3.forEach(function(value3, index, array){});
        
    var result4 = pd789Element.innerText;
    var smalltext4 = result4.toLowerCase();
    var exp = /(([a-z]*)\d+)/gi;
    var itog4 = smalltext4.match(exp);
        itog4.forEach(function(value4, index, array){});
    
    var c = Array.of(...new Set(Array.of(...itog, ...itog2, ...itog3, ...itog4)));
    document.write('<a href="data:text/plain;charset=utf-8,%EF%BB%BF' + encodeURIComponent(c) + '" download="text.txt">text.txt</a>');
    
</script>
Получается, что если в каком-то itog есть null, то останавливается весь процесс.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 19:27
Цитата Сообщение от arzobispo Посмотреть сообщение
Получается, что если в каком-то itog есть null, то останавливается весь процесс.
ну правильно - оперировать null не выйдет. Так а сложность то в чем? Проверьте itog'и на null и пустой массив, при отсутствии замените их значения или не включайте в результирующий массив для конкатенации и отсева на уникальность, что Вы производите в 29 строке.
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 19:33  [ТС]
Сложность в том, Что написать то, чтобы процесс не останавливался и в массив var c= записалось хоть что-то из найденного. Потому что писал условие:

JavaScript
1
2
3
4
if (itog2 != 'null') {
            itog2.forEach(function(value2, index, array){});
                            }
            else {itog2 == 0;}
И толку нет. Получается то что присвоил значение 0, толку нет. Потом писал itog2 == prostotext; и опять ни чего.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 19:38
arzobispo, что происходит в
JavaScript
1
.forEach(function(value2, index, array){});
?
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 19:44  [ТС]
Тут получается, что если есть какие-то текстовоцифровые данные в itog2, то они передаются в value2. Если данные null, то писать не чего. Я так понимаю.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 19:46
arzobispo,
Цитата Сообщение от arzobispo Посмотреть сообщение
Я так понимаю.
забавно)
Я вижу пустой цикл -
JavaScript
1
.forEach(function(value2, index, array){});
Предположил что Вы, удалили код из него, так как он не имеет отношения к проблеме. Это так? Или в коде эти строки присутствуют потому, что были написаны и Вы их просто не трогаете?
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 19:49  [ТС]
Код не удалял, все как есть так и написал, я начинающий изучать JS и поэтому в моем коде могут быть ошибки и несуразится, типа как пустой цикл.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 20:01
arzobispo, https://codepen.io/qwerty_wasd/pen/qBEpYYZ
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var pd789Element = document.getElementById("pd789");
 
var result = pd789Element.innerText;
var smalltext = result.toLowerCase();
var exp = /(([а-я]*)\d+)/gi;
var itog = smalltext.match(exp);
 
var result2 = pd789Element.innerText;
var smalltext2 = result2.toLowerCase();
var exp = /([а-я]*)/gi;
var itog2 = smalltext2.match(exp);
 
var result3 = pd789Element.innerText;
var smalltext3 = result3.toLowerCase();
var exp = /([a-z]*)/gi;
var itog3 = smalltext3.match(exp);
 
var result4 = pd789Element.innerText;
var smalltext4 = result4.toLowerCase();
var exp = /(([a-z]*)\d+)/gi;
var itog4 = smalltext4.match(exp);
 
if (itog && itog2 && itog3 && itog4) {
  var c = Array.of(...new Set(Array.of(...itog, ...itog2, ...itog3, ...itog4)));
  document.write('<a href="data:text/plain;charset=utf-8,%EF%BB%BF' + encodeURIComponent(c) + '" download="text.txt">text.txt</a>'); // ссылка не будет сформирована если хоть один параметр будет null
}
Ваш код намеренно не ревьюил, ибо - смотрим ниже

Цитата Сообщение от arzobispo Посмотреть сообщение
я начинающий изучать JS
более менее внятная дока от мозилы - https://developer.mozilla.org/ru/
https://developer.mozilla.org/... JavaScript
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 20:09  [ТС]
Получается, что в строки: 7, 12, 17 и 22, надо дописать что-то, чтобы все заработало. Так? Потому что в конце коммент: // ссылка не будет сформирована если хоть один параметр будет null
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 20:24
arzobispo, нет не так. Если ссыль должна быть сформирована в любом случае, просто изменить условия проверки в конце и все. Коммент был дан именно с этой целью.
И Вы не внимательны.)) Я ж в самом начале Вам написал
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
3. Объясните пожалуйста, что именно Вы хотите сделать.
Весь Ваш код, можно записать в одну строку - https://codepen.io/qwerty_wasd/pen/qBEpYYZ
JavaScript
1
document.writeln(`<a href="data:text/plain;charset=utf-8,%EF%BB%BF${encodeURIComponent(`${document.getElementById(`pd789`).textContent.toLowerCase().match(/(([а-я]*)\d+)/gim).join``||`data incorrect`}${document.getElementById(`pd789`).textContent.toLowerCase().match(/([а-я]*)/gim).join``||`data incorrect`}`)}" download="text.txt">text.txt</a>`);
И эта строка учитывает отсутствие значений для параметров
1
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 20:52  [ТС]
Вот это да, мне еще до вас учить и учить JS, круто!
Теперь сижу и думаю, а как вставить /(([a-z]*)\d+)/gim) и /([a-z]*)/gim), т.е. они по образу и подобию будут написаны как с русскими буквами?

Добавлено через 4 минуты
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
3. Объясните пожалуйста, что именно Вы хотите сделать.
Что хочу сделать: есть на хтмл-странице разные слова и мне нужно выбрать например такие: door, морковка, сыр, лук2, сыр, door, table289, при этом удалить дубли как сыр и door, и все это записать в столбик в текстовый файл.

Добавлено через 10 минут
Вот смотрю на ваш код и пытаюсь понять как это сделано, вернее даже не так, много очень много лет назад в универе учил pascal и там чтобы написать что-то надо блок-схему составить и прочее. Тут смотрю на ваш код и не могу понять А как тут ее зарисовать? Тут четыре строчки, все слитно и как образовать ее, ну даже если пусть все пишется слитно, получается:
1) создаем документ text.txt
1.2) после того как text.txt создан, в элементе pd789 все в нижний регистр + условие поиска (регулярное выражение) + объединяем и присваиваем тип - дата
1.3) тоже что и в 1.2 и на конце проверка на корректность
1) записываем в text.txt.
Так что ли?

Добавлено через 1 минуту
Можете пояснить:
JavaScript
1
2
${document.getElementById(`pd789`).textContent.toLowerCase().match(/(([а-я]*)\d+)/gim).join``||`data`}
${document.getElementById(`pd789`).textContent.toLowerCase().match(/([а-я]*)/gim).join``||` incorrect`}
Почему в начале data, а потом incorrect ? Вроде одинаково.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 21:11
Цитата Сообщение от arzobispo Посмотреть сообщение
Что хочу сделать: есть на хтмл-странице разные слова и мне нужно выбрать например такие: door, морковка, сыр, лук2, сыр, door, table289, при этом удалить дубли как сыр и door, и все это записать в столбик в текстовый файл.
таак, а набор слов, что нужно выбрать, как формируется? По желанию на текущий момент времени или есть готовый словарь(массив,объект)?

Цитата Сообщение от arzobispo Посмотреть сообщение
Можете пояснить:
JavaScript
1
2
${document.getElementById(`pd789`).textContent.toLowerCase().match(/(([а-я]*)\d+)/gim).join``||`data`} 
${document.getElementById(`pd789`).textContent.toLowerCase().match(/([а-я]*)/gim).join``||` incorrect`}
если левый операнд не сработает то сработает правый. А шаблоны - https://developer.mozilla.org/... e_literals - позволяют избавиться от синтаксиса "text" + var

Цитата Сообщение от arzobispo Посмотреть сообщение
Что хочу сделать: есть на хтмл-странице разные слова и мне нужно выбрать например такие: door, морковка, сыр, лук2, сыр, door, table289, при этом удалить дубли как сыр и door, и все это записать в столбик в текстовый файл.
https://codepen.io/qwerty_wasd/pen/qBEpYYZ
HTML5
1
<div id="pd789">door, морковка, сыр, лук2, сыр, door, table289</div>
JavaScript
1
document.writeln(`<a href="data:text/plain;charset=utf-8,%EF%BB%BF${encodeURIComponent(`${[...new Set(document.getElementById(`pd789`).textContent.toLowerCase().match(/[а-яa-z]+\d*/gim))].join`\r\n`||`data incorrect`}`)}" download="text.txt">text.txt</a>`);
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 21:13  [ТС]
Тогда по порядку,
есть html-страница, на ней тысячи слов русские, английские и какие-то еще. Среди этих слов есть слова с хештегами. Эти слова с хештегами повторяются между собой много раз и по скольку это хештеги, то они могут в начале или конце или в середине содержать цифры. При этом многие слова написаны в разном регистре.
Вот и пытаюсь из всех этих слов выбрать только слова с хештегами.

Поэтому в приведенном выше мной скрипте получилась такая логика:
1) выбираю весь текст.
2) из выбранного текст с помощью регулярных выражений указываю что искать.
3) записываю это все в массив и потом в текстовый файл.
И часто случается, что в искомом тексте при условии, например, #[а-я]*)\d+)/gim, нет таких буквоциферных слов, возникает ошибка is null. Это может и случиться и так: #[а-я]*/gim или так #[a-z]*)\d+)/gim или так #[a-z]*/gim .
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 21:24
arzobispo,
Цитата Сообщение от arzobispo Посмотреть сообщение
есть html-страница, на ней тысячи слов русские, английские и какие-то еще. Среди этих слов есть слова с хештегами. Эти слова с хештегами повторяются между собой много раз и по скольку это хештеги, то они могут в начале или конце или в середине содержать цифры. При этом многие слова написаны в разном регистре.
Вот и пытаюсь из всех этих слов выбрать только слова с хештегами.
осталось просто изменить немного код данный мной выше. Были бы внимательнее, получили бы ответ на несколько постов раньше
https://codepen.io/qwerty_wasd/pen/qBEpYYZ

HTML5
1
<div id="pd789">#door, #морковка, #сыр. Лук, #сыр, #door #table289 - #as2sd44 as3d4!</div>
JavaScript
1
document.writeln(`<a href="data:text/plain;charset=utf-8,%EF%BB%BF${encodeURIComponent(`${[...new Set(document.getElementById(`pd789`).textContent.toLowerCase().match(/\#[а-яa-z\d]+/gim))].join`\r\n`||`data incorrect`}`)}" download="text.txt">text.txt</a>`);
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 21:36  [ТС]
Круто! Спасибо!
-
От увиденного и прочтения ссылки о "Шаблонные строки", у меня мозг взорвался.
Получается, что в новой редакции Js похож на хештеги, где все пишется слитно в одну строку и где может хоть слева хоть справа выполнятся действия. Если перевести на русский, то это так как Надо надеть трусы.
Трусы надеты полностью.Если они еще не одеты можно одеть их через голову.Есть вариант одеть через ноги.Смотрим как удобнее будет одеть.В жизни всяко бывает вдруг нет ног.Трусы одеты.

По крайней мере так мне показалось современный js.

-

"Были бы внимательнее, получили бы ответ на несколько постов раньше", - у меня цель разобраться. Теперь есть пример кода, современного кода, который буду изучать. Одно дело изучать абстрактные примеры из книг на тему: как бы полететь на луну, а другое дело это моя задача. Изучил, понял, повторил, закрепил. Пошел дальше

Еще раз спасибо, открыли новый мир, современного js.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.01.2020, 21:42
arzobispo,
Цитата Сообщение от arzobispo Посмотреть сообщение
Пошел дальше
Когда освоитесь здесь - https://developer.mozilla.org/, добро пожаловать сюда - https://tc39.es/
Ни пуха
0
6 / 3 / 0
Регистрация: 09.08.2013
Сообщений: 143
06.01.2020, 21:45  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Ни пуха
Как гооврится: К черту!
А на самом деле, спасибо за урок!
0
06.01.2020, 21:46

Не по теме:

arzobispo, не за что )

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2020, 21:46
Помогаю со студенческими работами здесь

Подскажите что за ошибка TypeError: d.getElementById(.) is null
Подскажите что за ошибка. Фаербаг пишет: TypeError: d.getElementById(...) is null ...

Uncaught TypeError: Cannot read property 'style' of null
Доброго времени суток! Есть список, и две кнопки, по нажатию на одну из них список уезжает влево и прозрачность становится 0, при нажатии...

Как исправить такую ошибку Uncaught TypeError: num.split is not a function?
Заранее спасибо!!!! Написать функцию, входным параметром которой является строка ,содержащая символьную запись числа в двоично -...

Uncaught TypeError: Cannot set property 'onclick' of null(anonymous function)
пробовал произвести расчет.Но консоль пишет-Benzin.html:27 Uncaught TypeError: Cannot set property 'onclick' of null(anonymous function) ...

Uncaught TypeError: Cannot set property 'onclick' of null at window.onload
На этом сайте возникает ошибка http://www.wnero.esy.es Полностью ошибка звучит так Uncaught TypeError: Cannot set property...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru