获取一个像字符串这样的数字,转换它并每秒添加一个
Get a number like string, convert it and add one every second
我在面试中遇到了这个问题,但我失败了。我的答案很接近,但我没有完成剧本。问题是:从段落中获取文本,添加一个文本,然后每秒将新值放回段落中。我的逻辑是,在p中,数字是一个字符串。我用parseInt将其转换为数字,然后检查是否不是NaN,警报不是数字,否则用一个增加值并将其放回p中。
任何人请告诉我我错在哪里。
.JS:
$(function() {
setInterval("addOne()", 1000);
});
function addOne() {
var divP = $("div p").text();
parseInt(divP);
if (isNaN(divP)) {
alert("Not a number!");
} else {
divP++;
$("div p").text();
}
}
.HTML:
<div>
<p>1</p>
</div>
您有很多问题:
- 您不会将
parseInt()
的结果分配给任何内容 - 您没有向
parseInt()
提供radix
参数 - 您应该提供
addOne()
函数的引用setInterval()
以避免本质上使用eval()
- 您使用的是
text()
的 getter ,而不是设置divP
的值
下面是一个工作示例:
$(function() {
setInterval(addOne, 1000);
});
function addOne() {
var divP = parseInt($("div p").text(), 10);
if (isNaN(divP)) {
alert("Not a number!");
} else {
$("div p").text(++divP);
}
}
示例小提琴
也可以说,调用alert()
来显示 UI 状态信息(尤其是在每秒调用一次的函数中)不是很好的做法。
我可以找到 3 个错误。
-
您没有将
parseInt(divP)
分配给任何内容。应该是:
divP = parseInt(divP);
-
您没有正确使用
setInterval
。应为:
setInterval(function(){ addOne(); }, 1000);
-
您没有将新值放入元素
$("div p").text();
。应为:
$("div p").text(divP);
做这样的事情:
$(function() {
setInterval(function(){ addOne(); }, 1000);
});
function addOne() {
var divP = $("div p").text();
divP = parseInt(divP);
if (isNaN(divP)) {
alert("Not a number!");
} else {
divP++;
$("div p").text(divP);
}
}
小提琴
你可以使用这个
$("div p").html();
而不是
$("div p").text();
不好意思它必须是HTML而不是val,因为val用于输入元素。谢谢
你可以在这里找到答案。
.HTML
<div>
<button id="btnClickStart" >
Start Increment
</button>
<button id="btnClickStop">
Stop Increment
</button>
<p id="pId">
I am testing this script if it will work the 1st time.
</p>
</div>
JAVASCRIPT
$('#btnClickStart').click(function() {
startIncrement();
});
$('#btnClickStop').click(function() {
stopIncrement();
});
var myInterval ;
function startIncrement(){
myInterval = setInterval(function(){ addOne(); }, 1000);
}
function stopIncrement() {
clearInterval(myInterval);
}
var _array = [];
function addOne() {
var divP = document.getElementById('pId').innerHTML;
var _array = [];
for (var i = 0, len = divP.length; i < len; i++) {
parseInt(divP[i]);
if (isNaN(divP[i])) {
//alert("Not a number!");
} else{
_array.push(divP[i]);
}
}
for (var j = 0, len = _array.length; j < len; j++) {
_str =parseInt( _array[j]);
if(!isNaN(_str) ){
divPLast= divP.replace(_str, parseInt(_str)+1);
}
}
document.getElementById('pId').innerHTML = divPLast;
}
相关文章:
- 将一个方法转换为promise:Nodejs
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- 在Javascript中将一个值和字符串数组转换为if语句
- 在ISO转换后,JavaScript时间滞后了一个小时
- 将一个主要网站转换为javascript应用程序
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- 将一个对象转换为一个单键对象数组(带下划线?)
- 变量转换为另一个“未定义”的变量
- 如何将一个对象转换为数组对象
- 将一个十进制数转换成八分之一的分数
- 将一个html表转换为json对象并将其发送到php页面,该表有一个输入字段
- 为什么这不起作用?我认为这是一个转换问题
- 画布:如何完成平移、倾斜、旋转..仅在一个转换语句中
- 用JS解析两个HTML字符串,并将其中一个转换为Int
- 这些2D阵列包含不同结构的相同信息.如何将一个转换为另一个
- 将c#列表(多于一个)转换为JavaScript关联数组
- D3.js:在前一个转换完成之前,不要开始新的转换
- JSON与Array的比较,有没有一种方法可以将一个转换为另一个,然后再转换回来
- 如何使用一个转换会影响上下文中的多个内容
- SVG:转换,动画,然后另一个转换没有;不起作用