У меня есть переменная, которая выводит содержимое, когда я делаю 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, и это не имеет значения.
Если я уберу .str, он все равно выдаст ту же ошибку. Что меня привлекает, так это то, что это прямая копия другой функции в том же файле с .str.replace, и она работает в другой функции.
thisbuttonDownContents
уже есть .textContent
. У него нет еще одного .textContent
.
Да, попытка получить .textContent дважды была проблемой. Спасибо!! Я играл с этим часами.
В этой строке
thisbuttonDownContents = thisbuttonDownContents.textContent;
вы являетесь замена элементом DOM, который у вас ранее был с помощью string
, содержащегося в свойстве textContent
элемента DOM.
Очевидно, что thisbuttonDownContents
then больше не является элементом DOM, поэтому у него больше нет свойства textContent
.
Но даже если вы удалите эту строку, replace
— это функция, которая вызывается непосредственно для переменной, содержащей строку или строковый литерал, поэтому, как указывали другие, это должно быть
var test = thisbuttonDownContents.textContent.replace("Selected","");
или, если вы настаиваете на проблемной линии, упомянутой во введении,
var test = thisbuttonDownContents.replace("Selected","");
thisbuttonDownContents.textContent.str.replace("Selected","");
что вы имеете в виду под str здесь, не должно ли бытьthisbuttonDownContents.textContent.replace("Selected","");
?