迭代时出错 - 意外令牌

时间:2017-08-10 12:01:12

标签: javascript custom-data-attribute

我正在尝试迭代以获取数据属性并将其存储到变量中,但我得到了

  

未捕获的SyntaxError:意外的令牌{

const monthButton = document.querySelector('.month'),
        annualButton = document.querySelector('.annualy'),
        price = document.querySelectorAll('.price');


monthButton.addEventListener('click', function{
  for(var i=0; i>=4; i++){
    const dataMonth[i] = price[i].dataset.monthly;
  }
})

4 个答案:

答案 0 :(得分:6)

您没有为功能指定参数:function{需要更改为function(e){

同样,你的for循环会立即中断;将您的条件更改为i <= 4

同样(重新)移动const,因为数组应该已经在循环外定义并且不是const

答案 1 :(得分:3)

您需要小于或等于:

for(var i=0; i<=4; i++){

当我小于或等于4时,将其读作

答案 2 :(得分:2)

您的匿名函数后缺少()

monthButton.addEventListener('click', function () { ...

答案 3 :(得分:1)

你应该编写如下脚本:

const monthButton = document.querySelector('.month'),
    annualButton = document.querySelector('.annualy'),
    price = document.querySelectorAll('.price');


monthButton.addEventListener('click', function(){
  for(var i=0; i>=4; i++){
    const dataMonth[i] = price[i].dataset.monthly;
  }
})

为了解决其他问题,这是一个更新版本:

//Used var for each variable instead of const
var monthButton = document.querySelector('.month');
var annualButton = document.querySelector('.annualy');
var price = document.querySelectorAll('.price');

//replaced >= with < as this is logicly the correct one.
// removed the constant definition  as it is not needed.
monthButton.addEventListener('click', function(){
  for(var i=0; **i<4**; i++){
     **dataMonth[i]** = price[i].dataset.monthly;
  }
});

现在你的代码仍有问题,4代表什么?并根据您将值分配给dateMonth,这不一定是一个数组,如果您与我们共享HTML,我们将解决问题。