在Gallery示例上切换多个div元素

时间:2018-01-08 13:28:50

标签: javascript jquery this photo-gallery

我正在尝试构建简单的javascript / jquery库。我想这是一个非常具体的问题。

逻辑如下:制作尽可能多的 div ,因为数组包含元素( var sum )。这些元素呈现图像名称。我意识到在第一个 for 循环中(第一个追加函数添加图像,第二个添加名称列表 - 在图像之间导航)。在第二个 for 循环中,我设置了初始值(显示第一张图像)并且它可以正常工作。

我在尝试从名单中为点击的元素分配功能时遇到了障碍。第三个 for 循环显然有效(因为它是第二个的副本)。 有没有语法错误?

代码:

<div id="container"> //contains images
</div>

<div id="list"> //contains navigation numbers
</div>

<script>
    var array = ['0', '1', '2'];  //img names
    var sum = array.length;
    var currentId = 'a' + array[1];

    $(document).ready(function () {
        for (var i = 0; i < sum; i++) {
            $("#container").append("<img class='a' src='img/" + array[i] + ".jpg' id='a" + array[i] + "'>");
            $("#list").append("<a href='#a" + array[i] + "' onclick='checkButton()'>" + array[i] + "</a><br />");
        }
        for (var i = 0; i < sum; i++) {
            var inactiveId = 'a' + array[i];
            if (currentId !== inactiveId) {
                document.getElementById(inactiveId).style.display = "none";
            }
        }
        currentId1 = this.id;
        $(currentId1).click(function () {

            document.getElementById(currentId1).style.display = "block";

            for (var i = 0; i < sum; i++) {
                var inactiveId = 'a' + [i];
                if (inactiveId !== currentId1) {
                    document.getElementById(inactiveId).style.display = "none";
                }
            }

        })
    });

</script>

2 个答案:

答案 0 :(得分:0)

currentId1 = this.id;似乎是问题所在。

您正在引用this.id,但您从未声明过它!

编辑: 另请参阅Kaddaths的评论,他提供了一些关于代码中无法解决的问题的更多见解!

答案 1 :(得分:0)

def spread(arg):

 ret = []

 for i in arg:

   if isinstance(i,list):

     ret.extend(i)

   else:

     ret.append(i)

 return ret

def arrSum(*args):
    a = list(args)
    m = []
    m.extend(spread(a))
    return sum(m)
print(arrSum([1, 2, 3]))
print(arrSum(1, 2, 3))
print(arrSum([1, 2, 3], [4], 5))