我有这个coffeescript代码:
$(document).ready ->
setInterval refresh_table, 1000
refresh_table = ->
$.ajax
url: "/ac_units/refresh_table"
format: "js"
type: "POST"
data: { pointer:$('#pointer').data('pointer'), ideal:$('#ideal').val() , current:$('#current').val() }
此代码有效。
我想为此代码添加功能。 1)我想在指针发送到上面的服务器之前递增指针 2)我想将更新的指针值设置为div的数据 3)我想将更新的指针发送到服务器
我尝试了以下方法来完成上述功能:
$(document).ready ->
setInterval refresh_table, 1000
refresh_table = ->
a = $("#pointer").data("pointer")
$("#pointer").data "pointer", a++
$.ajax
url: "/XXX/refresh_table"
format: "js"
type: "POST"
data: { pointer:$('#pointer').data('pointer'), abc:$('#abc').val() , efg:$('#efg').val() }
但是这没用。 没有增量发生。 以下是我的控制台的一些输出:
Processing by XXXController#refresh_table as */*
Parameters: {"pointer"=>"0", "abc"=>"73", "efg"=>"79"}
Received params = {"pointer"=>"0", "abc"=>"73", "efg"=>"79", "controller"=>"xxx", "action"=>"refresh_table"}
ptr = 0
Started POST "/XXX/refresh_table" for 127.0.0.1 at 2014-04-04 14:15:44 -0400
Processing by XXXController#refresh_table as */*
Parameters: {"pointer"=>"0", "abc"=>"73", "efg"=>"79"}
Received params = {"pointer"=>"0", "abc"=>"73", "efg"=>"79", "controller"=>"xxx", "action"=>"refresh_table"}
ptr = 0
我做错了什么?为什么变量没有递增?有人可以建议吗?
由于
尝试此代码以回应以下答案:
$(document).ready ->
setInterval refresh_table, 1000
refresh_table = ->
a = $("#pointer").data("pointer")
x = ++a
$("#pointer").data "pointer", x
$.ajax
url: "/ac_units/refresh_table"
format: "js"
type: "POST"
data: { pointer:x, ideal:$('#ideal').val() , current:$('#current').val() }
但指针值仍为0
答案 0 :(得分:0)
您正在使用a++
。您需要++a
或a + 1
。
a++
在递增之前评估a
的值,以便将您设置为" new" data
属性。
...简单地
a = 1
x = a++
console.log(a) # 2
console.log(x) # 1
这会保存a
的值(除了1),然后将a
增加到2,然后将x
设置为已保存的值{ {1}},a
。
基本上,您的代码保证数据属性永远不会更改,因为它始终在1
递增之前将pointer
设置回当前值:
a
此代码通过在 a = $("#pointer").data("pointer")
$("#pointer").data "pointer", a++
递增后将其设置为a
的值来正确递增属性。
a