我开始学习javascript,我基本上需要一个每1秒向一个数字(即0)添加x值的计数。我修改了一些我在网上找到的代码并提出了这个代码:
var d=0;
var delay=1000;
var y=750;
function countup() {
document.getElementById('burgers').firstChild.nodeValue=y+d;
d+=y;
setTimeout(function(){countup()},delay);
}
if(window.addEventListener){
window.addEventListener('load',countup,false);
}
else {
if(window.attachEvent){
window.attachEvent('onload',countup);
}
}
那里可能存在剩余代码,但它按预期工作。
现在我的下一步是使用“,”每3位数对结果字符串进行分割 - 基本上1050503将变为1,050,503。
这是我从我的研究中找到并改编的:
"number".match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(",");
我无法找到将此代码合并到另一个代码中的方法。我该怎么用来替换这段代码的“数字”部分?
答案可能很明显但我已经尝试了所有我认识的事情。
提前致谢!
答案 0 :(得分:0)
要使用匹配语句,您需要将数字转换为字符串。
假设你有1234567
。
var a = 1234567;
a = a + ""; //converts to string
alert(a.match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(","));
如果您愿意,可以将其包装成一个函数:
function baz(a) {
a = a + "";
return a.match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(",");
}
用法为baz(1234);
,并将为我们返回一个字符串。
虽然我确实赞扬你使用模式匹配算法,但实际上这可能更容易使用基本的字符串解析函数来实现,因为它看起来并不像看到匹配语句那样令人生畏。
function foo(bar) {
charbar = (""+bar).split(""); //convert to a String
output = "";
for(x = 0; x < charbar.length; x++) { //work backwards from end of string
i = charbar.length - 1 - x; //our index
output = charbar[i] + output; //pre-pend the character to the output
if(x%3 == 2 && i > 0) { //every 3rd, we stick in a comma, except if it is not the leftmost digit
output = ',' + output;
}
}
return output;
}
用法基本上是foo(1234);
,产生1,234
。