Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:以下哪种实现更高效/更好?_Javascript_Jquery - Fatal编程技术网

Javascript:以下哪种实现更高效/更好?

Javascript:以下哪种实现更高效/更好?,javascript,jquery,Javascript,Jquery,我有一个图标,点击会增加数字输入的值 我最初写的是: $('.icon-chevron-up').click(function(){ var input = $(this).next(); var value = eval(input.val()); input.val((value+1).toString()); $(this).next.val(value+1); }); $('.icon-chevron-up').click(function(){ $(

我有一个图标,点击会增加数字输入的值

我最初写的是:

 $('.icon-chevron-up').click(function(){
      var input = $(this).next();
  var value = eval(input.val());
  input.val((value+1).toString());
  $(this).next.val(value+1);
 });
 $('.icon-chevron-up').click(function(){
  $(this).next().val((eval($(this).next().val()) + 1).toString());
 });
然后我将其改写为:

 $('.icon-chevron-up').click(function(){
      var input = $(this).next();
  var value = eval(input.val());
  input.val((value+1).toString());
  $(this).next.val(value+1);
 });
 $('.icon-chevron-up').click(function(){
  $(this).next().val((eval($(this).next().val()) + 1).toString());
 });

有没有更好的方法?如果是这样的话,为什么呢?

这些都不是最有效率的<不需要代码>评估,如果需要性能,应缓存选择器。有几种方法可以提高效率,但我会这样做:

$('.icon-chevron-up').click(function() {
  var $this = $(this), 
      val = $this.next().val();
  $this.next().val( ++val + '' );
});
++
val
强制转换为一个数字并添加
1
<代码>+'将上一个数字转换为字符串

如果您想要不那么简洁(我想更可读)的内容:


你说的输入是什么意思?它应该是文本输入还是仅仅是一个html标记

<button class="icon-chevron-up">Increase</button>
<div id="numinput">12</div>

var input = $('#numinput').html();
$('.icon-chevron-up').click(function(){    
    input++;
    $('#numinput').html(input);     
});
增加
12
var input=$('#numinput').html();
$('.icon chevron up')。单击(function(){
输入++;
$('#numinput').html(输入);
});

不要使用eval来解析整数,而是使用
parseInt
eval()
会带来安全问题;)试试看:
$(this.next().val(++$(this.next().val()+'')