Я пытаюсь заменить innerHTML span id = "price" с помощью jQuery. Я думаю, что я делаю это неправильно с 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 "
, вы можете просто сделать
$(function(){
$('#price:contains(" 0 ")').html('free');
});
Если вы хотите изменить его, только если "0" - это весь контент, сделайте следующее:
$(function(){
if ($('#price').text().trim()==="0") $('#price').text('free');
});
Я думаю, вы хотите:
$(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, поэтому не может просто использовать свойства DOM, такие как innerHTML. Если вы хотите, чтобы первый элемент соответствовал селектору '#price' как необработанный элемент DOM, вы могли бы использовать $('#price')[0]
а затем $('#price')[0].innerHTML
будет работать как ожидается. В качестве альтернативы вы можете использовать философию jQuery и использовать $('#price').html()
чтобы получить значение или $('#price').html(value)
чтобы установить значение.
Эта:
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");
}
});
Я не могу точно сказать, правильное ли ваше регулярное выражение. Вы не предоставили конкретный образец ввода своего содержимого диапазона.