加载时获取jsonp的选择器?

时间:2018-08-05 16:17:51

标签: javascript json blogspot

我已经编写了一些代码,可以使用本机javascript获取blogspot json数据,但是我想添加一个发布滑块,但是当我将一个变量点调用到posts类的类时,它将返回

  

未捕获的TypeError:无法读取未定义的属性“包含”   这是滑块代码

var item = document.querySelectorAll(".featured .item"),
  slideLeft = document.getElementById("slideLeft"),
  slideRight = document.getElementById("slideRight"),
  current = 0;

function reset() {
  for (var i in item) {
    if (item[i].classList.contains("current")) {
      item[i].classList.remove = "current"
    }
  }
}

function startSlide() {
  reset();
  item[0].classList.add("current");
}

function sLeft() {
  reset();
  item[current - 1].classList.add("current");
  current--;
}

function sRight() {
  reset();
  item[current + 1].classList.add("current");
  current++;
}
slideLeft.addEventListener("click", function() {
  if (current === 0) {
    current = item.length;
  }
  sLeft()
})
slideRight.addEventListener("click", function() {
  if (current === item.length - 1) {
    current = -1;
  }
  sRight()
})
startSlide()

Here是我创建的jsfiddle。

请给我一种在json帖子中添加幻灯片的方法

1 个答案:

答案 0 :(得分:0)

您可以通过将//handle slider代码包装在函数中并在JSONP响应返回时调用它来解决该错误。 see fiddle

现在您正在执行var item = document.querySelectorAll(".featured .item"),直到响应返回并且HTML目前不存在,这意味着item是一个空节点列表。

您将获得

  

“未捕获的TypeError:无法读取未定义的属性'包含'”

因为在reset()中,您遍历了返回的空节点列表的 properties (不一定是您期望的节点),所以在这种情况下,继承的属性会通过循环-{ {1}}属性,但没有length属性,因此classList会返回该错误。

奖金信息:为防止循环访问对象原型链中的属性,您可以像这样对hasOwnProperty()进行检查:

item[i].classList.contains("current")