获取类似字符串的数字,转换它并每秒添加一个

时间:2016-03-08 10:03:01

标签: javascript jquery html

我在面试时遇到了这个问题而且我失败了。我的答案很接近,但我没有完成剧本。 问题是:从段落中获取文本,添加一个并每秒将新值放回段落中。 我的逻辑是,在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>

4 个答案:

答案 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);
    }
}

Example fiddle

也可以说,调用alert()来显示UI状态信息(特别是在每秒调用的函数中)并不是一种好的做法。

答案 1 :(得分:1)

您可以使用此

total_amount    GRP2
5000            high
27000           high
36000           high
50000           high

而不是

    $("div p").html();

对不起, 它必须是html而不是val,因为val是输入元素。 谢谢

答案 2 :(得分:1)

我可以找到3个错误。

  1. 您没有将parseInt(divP)分配给任何内容。

    应该是:   divP = parseInt(divP);

  2. 您没有正确使用setInterval

    应该是: setInterval(function(){ addOne(); }, 1000);

  3. 您没有将新值添加到元素$("div p").text();

    应该是: $("div p").text(divP);

  4. 做这样的事情:

    $(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);
        }
    }
    

    Fiddle

答案 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; 
 }