我正在尝试使用jQuery替换span id =“price”的innerHTML。我认为我在使用RegExp做错了。
$(function(){
var element = $('#price');
var contenu = element.innerHTML;
var str = " 0 ";
var re = new RegExp("^.*"+str+".*","gi");
if (contenu.match(re)){
element.innerHTML="free";
}
});
刷新页面时没有返回任何内容。
答案 0 :(得分:2)
如果您尝试更改元素的内容(如果它包含字符串" 0 "
),那么您可以简单地执行
$(function(){
$('#price:contains(" 0 ")').html('free');
});
如果您只想在“0”是整个内容时进行更改,请执行以下操作:
$(function(){
if ($('#price').text().trim()==="0") $('#price').text('free');
});
答案 1 :(得分:0)
此:
var element = $('#price');
将返回一个jQuery数组,而不是DOM元素。它没有innerHTML
之类的属性。您需要获取实际的DOM元素。
在继续之前尝试此操作:
var element = $('#price')[0];
或者,重新编写代码以使用jQuery结果:
$(function(){
var element = $('#price');
var contenu = element.html();
var str = " 0 ";
var re = new RegExp("^.*"+str+".*","gi");
if (contenu.match(re)){
element.html("free");
}
});
我无法确定您的正则表达式是否正确。您尚未给出跨度内容的具体示例输入。
答案 2 :(得分:0)
我想你想要:
$(function(){
var element = $('#price');
var contenu = element.html();
var str = " 0 ";
var re = new RegExp("^.*"+str+".*","gi");
if (contenu.match(re)){
element.html("free");
}
});
jQuery不返回简单的DOM元素。相反,它返回一个每个DO元素的数组,它与jQuery包装器中包含的选择器相匹配,因此不能简单地使用像innerHTML这样的DOM属性。如果您希望第一个与选择器'#price'匹配的元素作为原始DOM元素,那么您可以使用$('#price')[0]
,然后$('#price')[0].innerHTML
将按预期工作。或者,您可以接受jQuery哲学,并使用$('#price').html()
获取值或$('#price').html(value)
来设置值。