加载时获取jsonp的选择器?
get selector of jsonp when it loaded?
我一直在编写代码,可以通过原生 javascript 获取 blogspot json 数据,但我想添加一个 post 滑块,但是当我调用变量指向 class 的 posts class,它 return
Uncaught TypeError: Cannot read property 'contains' of undefined
Here the slider Code
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 post
中添加幻灯片的方法
您可以通过将 //handle slider
代码包装在一个函数中并在 JSONP 响应返回时调用它来修复该错误。 see fiddle
现在您正在执行 var item = document.querySelectorAll(".featured .item")
,然后响应返回,此时 HTML 不存在,这意味着 item
是一个空节点列表。
您正在获得
"Uncaught TypeError: Cannot read property 'contains' of undefined"
因为在 reset()
中,您循环遍历 returned 空节点列表的 属性 (不一定只有您期望的节点)继承的 属性 通过循环 - length
属性 并且没有 classList
属性 所以这就是为什么 item[i].classList.contains("current")
会 return那个错误。
额外信息:为了防止遍历对象原型链中的属性,您可以像这样包含对 hasOwnProperty() 的检查:
for (var i in item) {
// if the item object does not have this property as its own
// (for example its an inherited property) then skip this property.
if (!item.hasOwnProperty(i)) {
continue;
}
....
}
我一直在编写代码,可以通过原生 javascript 获取 blogspot json 数据,但我想添加一个 post 滑块,但是当我调用变量指向 class 的 posts class,它 return
Uncaught TypeError: Cannot read property 'contains' of undefined Here the slider Code
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 post
中添加幻灯片的方法您可以通过将 //handle slider
代码包装在一个函数中并在 JSONP 响应返回时调用它来修复该错误。 see fiddle
现在您正在执行 var item = document.querySelectorAll(".featured .item")
,然后响应返回,此时 HTML 不存在,这意味着 item
是一个空节点列表。
您正在获得
"Uncaught TypeError: Cannot read property 'contains' of undefined"
因为在 reset()
中,您循环遍历 returned 空节点列表的 属性 (不一定只有您期望的节点)继承的 属性 通过循环 - length
属性 并且没有 classList
属性 所以这就是为什么 item[i].classList.contains("current")
会 return那个错误。
额外信息:为了防止遍历对象原型链中的属性,您可以像这样包含对 hasOwnProperty() 的检查:
for (var i in item) {
// if the item object does not have this property as its own
// (for example its an inherited property) then skip this property.
if (!item.hasOwnProperty(i)) {
continue;
}
....
}