Uncaught TypeError: не удается прочитать свойство 'str' неопределенного

У меня есть переменная, которая выводит содержимое, когда я делаю console.info, однако, когда я пытаюсь выполнить операцию .str.replace для этой переменной, она говорит, что она не определена!

var thisbuttonDownContents = document.getElementById("Frm" + frm + 'Results');

if (thisbuttonDownContents != null) {
  thisbuttonDownContents = thisbuttonDownContents.textContent;
  console.info(thisbuttonDownContents); //This outputs: West Ter -  Selected 
  var test = thisbuttonDownContents.textContent.str.replace("Selected", ""); 
  //^ This gives the error: Uncaught TypeError: Cannot read property 'str' of undefined

У меня есть еще одна функция в этом javascript, из которой я скопировал и вставил этот код, и он отлично работает! Тот факт, что console.info фактически возвращает значение, показывает, что элемент существует и не является неопределенным. Я пробовал приведение типов к String, и это не имеет значения.

thisbuttonDownContents.textContent.str.replace("Selected",""‌​); что вы имеете в виду под str здесь, не должно ли быть thisbuttonDownContents.textContent.replace("Selected",""); ?
Code Maniac 31.05.2019 09:19

Если я уберу .str, он все равно выдаст ту же ошибку. Что меня привлекает, так это то, что это прямая копия другой функции в том же файле с .str.replace, и она работает в другой функции.

CSchwarz 31.05.2019 09:21
thisbuttonDownContents уже есть .textContent. У него нет еще одного .textContent.
deceze 31.05.2019 09:22

Да, попытка получить .textContent дважды была проблемой. Спасибо!! Я играл с этим часами.

CSchwarz 31.05.2019 09:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
270
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В этой строке

thisbuttonDownContents = thisbuttonDownContents.textContent;

вы являетесь замена элементом DOM, который у вас ранее был с помощью string, содержащегося в свойстве textContent элемента DOM.

Очевидно, что thisbuttonDownContents then больше не является элементом DOM, поэтому у него больше нет свойства textContent.

Но даже если вы удалите эту строку, replace — это функция, которая вызывается непосредственно для переменной, содержащей строку или строковый литерал, поэтому, как указывали другие, это должно быть

var test = thisbuttonDownContents.textContent.replace("Selected","");

или, если вы настаиваете на проблемной линии, упомянутой во введении,

var test = thisbuttonDownContents.replace("Selected","");

Другие вопросы по теме