函数在JQuery中给出未定义的错误

时间:2017-12-13 19:18:33

标签: javascript jquery html arrays slider

我正在尝试将滑块集成到我的应用程序中。 我指的是w3schools sample。 但由于某种原因,每当页面加载图像时会出现一秒钟然后消失,当我点击箭头或点时,我会得到函数未定义的错误,如下所示。

  

未捕获的ReferenceError:未定义plusSlides       在HTMLAnchorElement.onclick(details.html:1)

任何帮助将不胜感激,提前谢谢...... !!! 请在下面找到我的代码。

%python

import sys
import json

sys.argv = []
sys.argv.append('{"product1":{"brand":"x","type":"y"}}')
sys.argv.append('{"product1":{"brand":"z","type":"a"}}')

products = sys.argv

yy= {}
my_products = []

for n, i in enumerate(products[:]):
    xx = json.loads(i)
    for j in xx.keys():
        yy["brand"] = xx[j]['brand']
        yy["type"] = xx[j]["type"]
        my_products.append(yy)

print my_products

2 个答案:

答案 0 :(得分:1)

您尝试从HTML文档中全局调用函数:

onclick="plusSlides(-1)"

但是这些函数是在另一个函数内的封闭范围内定义的:

$(document).ready(function() {

    //...

    function plusSlides(n) {
        showSlides(slideIndex += n);
    }

    //...

});

在内部 中没有定义传递给function() {}处理程序的匿名document.ready将在外部该函数可见。

您可以将功能分配给window对象:

$(document).ready(function() {

    //...

    window.plusSlides = function (n) {
        showSlides(slideIndex += n);
    };

    //...

});

定义该范围之外的函数:

$(document).ready(function() {

    //...

});

function plusSlides(n) {
    showSlides(slideIndex += n);
}

//...

出于同样的原因,您可能还需要调整其他功能,对这些功能的引用等。函数外部的东西可以从它内部访问,但不是相反。

答案 1 :(得分:0)

这是一个经典的范围界定问题。

plusSlides$.ready(function)内定义,window具有自己的范围,无法在window.plusSlides = function(n) { showSlides(slideIndex += n) } 级别访问。为您轻松修复就像这样重写:

plusSlides

所以window现在是$.ready(function)范围内可访问的函数,但是,函数的内容也是一个闭包,可以访问范围。 DROP TABLE IF EXISTS cb.destTable; CREATE TABLE cb.destTable AS SELECT field1::VARCHAR, field2::VARCHAR, field3::VARCHAR FROM sourceTable WHERE Id = 2;