我是一个javascript新手所以这可能是一个愚蠢的问题。我正在尝试生成一个带有短语“(x items)”的脚本,并将其更改为“(x)”,其中x可以表示任何数字。
这就是我现在所拥有的:
<script type="text/javascript">
$(document).ready(function(){
function changeText(){
$(".CartLink:contains('2 items')").html('<a href="/cart.php">Cart <span>(2)</span></a>');
}
changeText();
$(document).ajaxSuccess(function() {
changeText();
});
});
</script>
上面的脚本能够将短语“(2 items)”替换为“(2)”但我需要修改脚本,以便2可以是任何数字。谢谢。
这是.CartLink元素包含的HTML:
<li style="display:" class="CartLink"><a href="/cart.php">Cart <span>%%GLOBAL_CartItems%%</span></a></li>
答案 0 :(得分:0)
您可以使用拆分来分隔计数和文本。
$( document ).ready(function() {
$(".CartLink").html('<a href="/cart.php">Cart <span>'+$(".CartLink").text().split(" ")[0]+'</span></a>');
});
答案 1 :(得分:0)
Javascript作为字符串替换方法。所以你可以简单地删除项目部分。
var foo = ('2 items');
var newFoo = foo.replace("items", "");
然后newFoo会变成('2')
答案 2 :(得分:0)
你从哪里得到“2”变量?
var items = 2;
items ++; //items = 3;
$('.Cart').html("Items in cart:" + items.toString() + ". Foo");
看看我如何添加“+”来添加字符串?
我必须补充一点,这只是糟糕的js。
使您的商品变量:
var str = "(Items 2)";
var numberStr = "(" + str.split(" ").pop(); //makes "(2)" or use .replace or whatever works.
请记住,从字符串创建变量将导致另一个字符串。如果你想把你的新项目var作为一个数字来操作,你必须得到一个像这样的整数,
var numberStr = "(3)";
var int = parseFloat(numberStr.replace(/["'()]/g,""));
答案 3 :(得分:0)
S('。CartLink')。text($('。CartLink')。text()。split('')[0])
答案 4 :(得分:0)
理想情况下,这应该是服务器端任务。但如果你有一个限制要求你做这个客户端......
您无需替换所有html。您只需修改span
:
$('.CartLink span').text(function(_, val) {
return val.replace(' items', '');
});
答案 5 :(得分:0)
如果用这个替换你的changeText函数,它应该可以正常工作:
function changeText() {
var itemCountSpan = $(".CartLink a span")
if (/(\d+) items/.test(itemCountSpan.text())) {
itemCountSpan.text(RegExp.$1);
}
}
答案 6 :(得分:0)
这是一个简单的RegEx版本。
$(document).ready(function(){
function changeText(){
$(".CartLink").each(function() {
var newhtml = $(this).html().replace(/\((\d+) items\)/, "($1)");
$(this).html(newhtml);
});
}
changeText();
});
它使用CartLink类查看字符串(x items)
的每个元素,其中x是一个或多个数字,并删除单词“items”。 $1
是在(\d+)
括号内匹配时设置的属性,允许我们在替换字符串中使用我们想要的数字。