我在面试时遇到了这个问题而且我失败了。我的答案很接近,但我没有完成剧本。 问题是:从段落中获取文本,添加一个并每秒将新值放回段落中。 我的逻辑是,在p中,数字是一个字符串。我用parseInt将其转换为数字,然后检查是否为notNa,警告不是数字,否则用1增加值并将其放回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>
答案 0 :(得分:5)
你有很多问题:
parseInt()
的结果分配给任何内容radix
parseInt()
参数
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状态信息(特别是在每秒调用的函数中)并不是一种好的做法。
答案 1 :(得分:1)
您可以使用此
total_amount GRP2
5000 high
27000 high
36000 high
50000 high
而不是
$("div p").html();
对不起, 它必须是html而不是val,因为val是输入元素。 谢谢
答案 2 :(得分:1)
我可以找到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);
}
}
答案 3 :(得分:0)
你可以在这里找到答案 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;
}