我试图将类似的代码应用于现有的Stackoverflow主题,该主题应用以下代码:http://jsfiddle.net/zsNF5/4/

问题是:单击按钮时收到消息Uncaught ReferenceError: ic1 is not defined

function ImageCollection(images) {
    this.images = images;
    this.i = 0;

    this.no = function(imgId) {
        var img = document.getElementById(imgId);
        this.i++;
        if (this.i == images.length)
            this.i = 0;
        img.src = images[this.i];
    }

    this.yes = function(imgId) {
        var img = document.getElementById(imgId);
        this.i++;
        if (this.i == images.length)
            this.i = 0;
        img.src = images[this.i];
    }
}

var ic1 = new ImageCollection(
    ['images/test.jpg', 'images/no1.jpg', 'images/no2.jpg']
);


变量ic1是在代码中定义的,这就是为什么我感到困惑的原因。

这是我的html:

<!DOCTYPE html>
<html>
<head>
    <title>Face or no face</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
    <script type="javascript.js"></script>
</head>
<body>
<div class="title">
    <h1 >IS THIS A FACE?</h1>
</div>
<img class="photo" src="images/test.jpg">
<div class="container">
    <form method="post" action="store.php">
        <input type='button' class="button1" value='NO' onclick='ic1.no("container")' />
        <input type='button' class="button2" value='YES' onclick='ic1.yes("container")' />
    </form>
</div>
</body>
</html>


我希望我很清楚,因为我的JS技能显然非常有限。谢谢!

最佳答案

您正在使用var关键字定义ic1。这将其限制为最接近的范围(可能不是窗口)。将其定义为全局

window.ic1 = new ImageCollection(
    ['images/test.jpg', 'images/no1.jpg', 'images/no2.jpg']
);

09-25 16:52