我在这里阅读了其他几个问题,他们似乎没有答案,不确定这种错误是否会在个案的基础上发生。
我对Javascript的魔法并不太熟悉,我的文字是“9.99美元/月”,我试图在跨度中分开它。这就是我所拥有的:
var str = jQuery(".mm-checkoutSection2 ul li .mm-data").html();
var month = /(\/\month)/;
var year = /(\/\year)/;
var dollar = /\$/g;
var currency = /(USD)/;
str = str.replace(dollar, '<span class="mm-data-sign"><i class="fa fa-dollar"></i></span>');
str = str.replace(currency, '<span class="mm-data-currency">(USD)</span>');
str = str.replace(month, '<span class="mm-data-plan">/Monthly</span>');
str = str.replace(year, '<span class="mm-data-plan">/Yearly</span>');
jQuery(".mm-checkoutSection2 ul li .mm-data").html(str);
所以,这实际上在前端工作。我根据需要得到了所有的跨度和类,但出于某种原因,当我查看控制台时,我得到一个“未捕获的TypeError:无法读取属性'替换'未定义”,这导致我的页面上出现了一些其他Javascript元素打破。我不知道如何调试/解决这个问题。
答案 0 :(得分:0)
快速测试显示代码不是您的问题,很可能您在HTML内容中executing this code before the DOM has finished loading,因此您要查找的元素(".mm-checkoutSection2 ul li .mm-data"
)尚不存在,因此你的str变量是未定义的。
var str = "$9.99 USD/month";
var month = /(\/\month)/;
var year = /(\/\year)/;
var dollar = /\$/g;
var currency = /(USD)/;
str = str.replace(dollar, '<span class="mm-data-sign"><i class="fa fa-dollar"></i></span>');
str = str.replace(currency, '<span class="mm-data-currency">(USD)</span>');
str = str.replace(month, '<span class="mm-data-plan">/Monthly</span>');
str = str.replace(year, '<span class="mm-data-plan">/Yearly</span>');
console.log(str);
&#13;
要处理不通用的元素,您需要在执行周围包裹conditional:
if (jQuery(".mm-checkoutSection2 ul li .mm-data").length) {
let str = jQuery(".mm-checkoutSection2 ul li .mm-data").html()
.replace(/\$/g, '<span class="mm-data-sign"><i class="fa fa-dollar"></i></span>')
.replace(/(USD)/, '<span class="mm-data-currency">(USD)</span>')
.replace(/(\/\month)/, '<span class="mm-data-plan">/Monthly</span>')
.replace(/(\/\year)/, '<span class="mm-data-plan">/Yearly</span>');
}
答案 1 :(得分:0)
你能提供更多细节吗? 该消息显示该行是否导致此问题? 第一次替换呼叫时var str是否未定义?
如果你试试这个
var str = jQuery(".mm-checkoutSection2 ul li .mm-data").html() || '';
可以解决您的问题吗?
答案 2 :(得分:-1)
似乎&#34; str&#34;当您尝试替换它的内容时,尚未定义。你有一个元素&#34; .mm-checkoutSection2 ul li .mm-data&#34;在调用js的HTML端?