字符串上的JS str.replace“不是函数”错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串上的JS str.replace“不是函数”错误相关的知识,希望对你有一定的参考价值。

str.replace()引发此错误:“ TypeError:self.options.strings.map不是函数。”

我知道它也应该是一个字符串,参数也应该是(或正则表达式)。检出的类型正确:字符串。

该字符串未在代码中声明,我从元素的html中提取了该字符串,正确地返回了一个字符串。我尝试使用香草js方式而不是JQ来获取内部html,没有任何变化。该元素还包含嵌套元素,但这应该没问题,因为它们也是字符串化的。

我尝试用任意字符串替换正则表达式,同样的错误。我附加了toString(),并包装了String(obj),什么也没有。

最奇怪的是,在浏览器控制台中运行代码段确实有效。

我在这个论坛上寻找了类似的问题,但都属于上述问题之一。

// Pull the string from an element.
let str = $("#strHolder").html();

// Make sure it's a string.
if (typeof str !== "string" || str === undefined) 
  console.error("Not a string or undefined.");


console.log(typeof str); // Returns "string".

// Append some code after each break tag.
// TypeError: self.options.strings.map is not a function
str = str.replace(/<br>/g, "<br>^400");

console.log(str);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="strHolder">
  Lorum ipsum <br> dolor sit amet <br>
  <div id="nestedStuff">
    consectetur adipiscing elit
  </div>
</div>
答案

一个可能的原因可能是您的代码在DOM完全加载之前正在执行。在这种情况下,您可以将代码放在body标记的底部,也可以用DOMContentLoaded event

包装代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- HTML -->

<script>
  document.addEventListener('DOMContentLoaded', (event) => 
      // Pull the string from an element.
    let str = $("#strHolder").html();

    // Make sure it's a string.
    if (typeof str !== "string" || str === undefined) 
      console.error("Not a string or undefined.");
    

    console.log(typeof str); // Returns "string".

    // Append some code after each break tag.
    // TypeError: self.options.strings.map is not a function
    str = str.replace(/<br>/g, "<br>^400");

    console.log(str);
  );
</script>

<div id="strHolder">
  Lorum ipsum <br>
  dolor sit amet <br>
  <div id="nestedStuff">
    consectetur adipiscing elit
  </div>
</div>

以上是关于字符串上的JS str.replace“不是函数”错误的主要内容,如果未能解决你的问题,请参考以下文章

js的replace如何全部替换目标字符串

js去除字符串空格(空白符)

js去除字符串空格(空白符)

js去除字符串空格(空白符)

我想用js实现字符串的替换:用str=str.replace(str1,str2),要用到正则表示式。

js去空格