需要修复JavaScript,以便数组从正确的位置开始

需要修复JavaScript,以便数组从正确的位置开始,javascript,arrays,function,Javascript,Arrays,Function,嗨,我有一个JSFIDLE要分享,但以前从未使用过,所以我希望我做得对。。 我也有这些屏幕截图,以更好地显示我的意思: 我在gallery页面中有一个图像表,当你点击一个图像时,它会打开一个显示空白但大得多的图像的框架,从而获得你点击的较小图像的来源。这很好,但我有一个数组中列出的画廊中的所有图像和大框架上有三个按钮:上一个,关闭和下一个。到目前为止,JavaScript代码允许您单击“下一步”和“上一步”来查看它们,但它总是从数组[0]开始,如果您首先单击“库”页面查看列表中的第六个,这是

嗨,我有一个JSFIDLE要分享,但以前从未使用过,所以我希望我做得对。。

我也有这些屏幕截图,以更好地显示我的意思:

我在gallery页面中有一个图像表,当你点击一个图像时,它会打开一个显示空白但大得多的图像的框架,从而获得你点击的较小图像的来源。这很好,但我有一个数组中列出的画廊中的所有图像和大框架上有三个按钮:上一个,关闭和下一个。到目前为止,JavaScript代码允许您单击“下一步”和“上一步”来查看它们,但它总是从数组[0]开始,如果您首先单击“库”页面查看列表中的第六个,这是不好的

我希望这是有意义的,如果没有那么让我知道

问题在于这一行导致它从第一个图像开始:

currentIndex = 0;

如何更改此设置,使currentIndex编号成为用户第一次单击的图像?

在每个图像上放置一个ID,即数组中的编号,然后在单击时将currentIndex更改为该编号。

有几种方法,但这实际上取决于您使用的内容以及您希望代码看起来有多干净。我在每个div中放置了一个隐藏的输入,并使用JQuery的
$(“输入”,$(this.parent()).val()检索它

您还可以使用Jquery的索引

您可以将它放在一个类中,并检索单击项的类(与为每个图像设置ID的想法相同)

单击可以在class属性中添加一个选择器,然后可以使用for each来计算在按图像顺序点击该类之前经过的图像数量

您还可以执行showlagle(这个,index#)并以这种方式设置索引。但是我不能让你的JS小提琴工作


对每个图像行执行以下操作:

    <td><a href="#" onclick="javaScript:showLarge(this,1);" ><img class="imgBorder" id="image1"  src="Media//Gallery//img_1.jpg" alt="Gallery Image 1" /></a>
    </td>
这将根据单击的索引按id获取图像

对于“下一步+上一步”按钮,请执行以下操作:

function changeImage(direction) {
    index = parseInt(currentIndex) + parseInt(direction);

    if (index < 1) {
        index = 1; // or use imgArray.length to rotate round
    }

    if (index > imgArray.length) {
        index = imgArray.length; // or use 0 to rotate round
    }
    src = document.getElementById("image"+index);
    document.getElementById('largeImage').src = src.src;
    currentIndex = index;
}
功能更改图像(方向){
index=parseInt(当前索引)+parseInt(方向);
如果(指数<1){
index=1;//或使用imgArray.length旋转
}
如果(索引>imgaray.length){
index=imgArray.length;//或使用0旋转
}
src=document.getElementById(“图像”+索引);
document.getElementById('largeImage').src=src.src;
currentIndex=索引;
}

尝试以下方法:

function findIndex(src) {
    for (i = 0; i = imgArray.length; i++)
        if (imgArray[i].src == src) {
            currentIndex = i;
            return;
        }
}
function showLarge(img) {
    var largeFrame = document.getElementById("zoomedIn");
    largeFrame.style.visibility = 'visible';
    var largeImage = document.getElementById("largeImage");
    largeImage.src = img.src;
    findIndex(img.src);
}
它将更新currentIndex值。 我已经更新了您的JSFIDLE:
但我无法运行它,所以请直接尝试您的代码。

谢谢您,但我还不知道如何使用jquery,因为我正在尝试学习JavaScript,这是为了一项即将到期的大学作业,然后使用最后一行,它根本不需要jquery。我正在尝试使用您的想法,但我真的很挣扎。我也不能让JS Fiddle工作,但如果我能给你我的文件会有帮助吗?把你的onclick放进去,因为jsfiddle不会从HTML调用showLarge函数到JSI让它工作!我不得不用我自己的方式重写它,同时仍然使用你的想法,用身份证号码快速浏览Dhmm似乎仍然不起作用。顺序又变得混乱了:/你能举一个在JSFIDLE pls上重现错误的工作示例吗?使用这一个,javascripts函数是未定义的。不确定如何使用JSFIDLE,因为我放在它上面的任何代码我都不知道哪里会出现错误,结果面板也不会工作:/但是我认为这是因为您的代码仍然使用“currentIndex=0;”从JSFIDLE中,它输出的结果与我在原始POST中提到的相同。在我的findIndex函数中,将currentIndex更改为CurrentImages。当我单击表中的第四个图像(数组[3])并按next时,它只会像最初一样显示第二个数组(第二个图像)。它应该显示第5个图像(数组[4])
function findIndex(src) {
    for (i = 0; i = imgArray.length; i++)
        if (imgArray[i].src == src) {
            currentIndex = i;
            return;
        }
}
function showLarge(img) {
    var largeFrame = document.getElementById("zoomedIn");
    largeFrame.style.visibility = 'visible';
    var largeImage = document.getElementById("largeImage");
    largeImage.src = img.src;
    findIndex(img.src);
}