Jquery在数组中起作用

时间:2009-10-28 03:24:04

标签: jquery arrays function

我的Javascript函数存在问题。

我的代码可能也很深入,但我确信Stackoverflow上有人知道这个awnser!

好的,首先我有一个用于保存图片ID的PHP会话

然后我有一个页面,一次显示5个图像,使用JQuery Click fonction浏览我的图像

我使用的功能:

$(document).ready(function() {    <---- i click the arrow
  $("#imgnext").click(
 function(){

    if(session_set("session_next")== true){    <-------- calling session_set()

     img_set_1("img1_hover","1","next","cie_name");  <--------Calling img_set_1()
     img_set_2("img2_hover","2","next","cie_name");  <------same for all 5 imgs
     img_set_3("img3_hover","3","next","cie_name");
     img_set_4("img4_hover","4","next","cie_name");
     img_set_5("img5_hover","5","next","cie_name");

                                   }

                   }

  );

  $("#imgprev").click(
 function(){

      if(session_set("session_previous")== true){
         img_set_1("img1_hover","1","prev","cie_name");
         img_set_2("img2_hover","2","prev","cie_name");
         img_set_3("img3_hover","3","prev","cie_name");
         img_set_4("img4_hover","4","prev","cie_name");
         img_set_5("img5_hover","5","prev","cie_name");
                                     }

         }

  );


});

if条件是确保id已更新。

代码有效,但有一个问题。

如果我点击箭头来快速我的会话img id搞砸了。

例如,我将img id设置为10。

img_set_1("img1_hover","1","next","cie_name");

返回正确的img id在10 + 1 cuse的img in div img1_hover

我有5个这样的div。所以每当我看到5个imgs时,我将会话img id增加5,这样我就能看到5个下一个imgs。

因为我做了一个条件,看看我的会话id增量是否返回true,我期待img id是完全相同的。但不!

如果我单击我的箭头来快速会话ID在页面上搞砸了

有人有想法吗?

会话set()函数

function session_set(action) {
    var xhr1 = getXMLHttpRequest();
    xhr1.onreadystatechange = function() {
        if (xhr1.readyState == 4 && (xhr1.status == 200 || xhr1.status == 0)) {
            document.getElementById(box).innerHTML=xhr1.responseText;

        }
    };


    var sVar7 = encodeURIComponent(action);

    xhr1.open("GET", "ajax.php?variable7=" + sVar7, true);
    xhr1.send(null);
        return true;
}

现在设置会话img id。如果action ='session_next'i,则增加5,否则增加前一个减去5。

img set x()函数:

   function img_set_1(box_1,sessionid,action,cie) {
    var xhr1 = getXMLHttpRequest();
    xhr1.onreadystatechange = function() {
        if (xhr1.readyState == 4 && (xhr1.status == 200 || xhr1.status == 0)) {
            document.getElementById(box_1).innerHTML=xhr1.responseText;
        }
    };
    var sVar1 = box_1;
    var sVar6 = sessionid;
    var sVar7 = encodeURIComponent(action);
    var sVar8 = encodeURIComponent(cie);
    xhr1.open("GET", "ajax.php?variable1=" + sVar1 + "&variable6=" + sVar6 + "&variable7=" + sVar7 + "&variable8=" + sVar8, true);
    xhr1.send(null); 
    return true;
} 

此函数返回会话ID + img位置。即时通讯调用5个功能来改变我的5个图像。

2 个答案:

答案 0 :(得分:0)

总体思路:

  • 声明一个全局变量,在点击事件中将其设置为true。
  • 当您的会话更新时(当您收到回复时?)将其设置为false。
  • 在click事件开始时检查全局变量。如果是,则取消单击事件(通过返回false)。

答案 1 :(得分:0)

我明白了!!!!

我随时都在调用所有功能。现在我在更改会话ID时调用函数

而不是调用set_session()然后调用我的另外5个函数。

我调用了set_session()并在其中移动了5 img函数并在readystate上调用它们。

接缝工作。