未捕获的TypeError:无法读取未定义的属性'str'

时间:2019-05-31 07:18:09

标签: javascript

我有一个变量,当我执行console.log时会输出内容,但是当我尝试对该变量执行.str.replace操作时,它表示未定义!

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

if (thisbuttonDownContents != null) {
  thisbuttonDownContents = thisbuttonDownContents.textContent;
  console.log(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.log实际上返回一个值的事实表明该元素存在且未定义。我尝试过类型转换toString,这没什么区别。

1 个答案:

答案 0 :(得分:2)

在这一行

thisbuttonDownContents = thisbuttonDownContents.textContent;

您正在用DOM元素的string属性中包含的textContent替换以前拥有的DOM元素。

很显然,thisbuttonDownContents不再是DOM元素,因此它不再具有textContent属性。

但是即使删除了这一行,replace还是直接在包含字符串或字符串文字的变量上调用的函数,因此,正如其他人指出的那样,

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

或者,如果您坚持引言中提到的有问题的路线,

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