2012-07-11 97 views
0

您好我有一個有點問題,與一些JavaScript,我試圖讓工作JS功能如下的Javascript問題與循環

var changing_thumbs = new Array(); 
function changeThumb(index, i, thumb_count, path) { 
    if (changing_thumbs[index]) { 
     if (path.indexOf('imageCount=') !== -1) { 
      lastIndexOfEquals = path.lastIndexOf('='); 
      path = path.substring(0, lastIndexOfEquals + 1); 
      $j('#' + index).attr('src', path + i); 
     } 
     else { 
      $j('#' + index).attr('src', path + '&imageCount=' + i); 
     } 
      i = i % thumb_count + 1; 
     changing_thumbs[index] = setTimeout("changeThumb('" + index + "', '" + i + "', '" + thumb_count + "', '" + path + "')", 600); 
    } 
} 
function startVideoPreview(index, thumb_count, path) { 
    changing_thumbs[index] = true; 
    changeThumb(index, 1, thumb_count, path); 
} 
function endVideoPreview(index, path) { 
    clearTimeout(changing_thumbs[index]); 
    document.getElementById(index).src = path; 
} 

的HTML調用低於

<img id="3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be" src="/Image/GetClipImg?photoID=3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be&userID=2" alt="Test Clip Description" onmouseout="endVideoPreview('3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be', '/Image/GetClipImg?photoID=3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be&userID=2')" onmouseover="startVideoPreview('3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be', 7, '/Image/GetClipImg?photoID=3a80b9aa-8b2f-4fb9-b3b0-02b2f55bf3be&userID=2')"> 

一切似乎很好地工作,但是這兩條線

i = i % thumb_count + 1; 
changing_thumbs[index] = setTimeout("changeThumb('" + index + "', '" + i + "', '" + thumb_count + "', '" + path + "')", 600); 

,絕不會在執行之前的IF語句,他們只是得到STE後打過度。我確信這將是一個基本的東西,但我對JS很陌生,我似乎無法看出問題所在。任何提示或技巧將不勝感激。

+1

你應該考慮與調試螢火蟲或IE開發工具的代碼。瀏覽代碼並查看腳本執行過程中'i'的值是如何變化的。 – 2012-07-11 01:50:03

+0

感謝您的回覆。 Glenn我一直在試圖用Firebug進行調試,我已經通過它碰到這行的代碼: '$ j('#'+ index).attr('src',path +'&imageCount ='+ i) ;' 然後跳出這個函數,它從來沒有命中線來增加i並調用函數。 – 2012-07-11 09:31:22

回答

3

setTimeout需要回調。

並且不要使用字符串作爲第一個參數,請使用函數。

試試這個:

changing_thumbs[index] = setTimeout(function() { 
    changeThumb(index, i, thumb_count, path); 
}, 600); 
+0

感謝xdazz,但是代碼在它到達'$ j('#'+ index).attr('src',path +'&imageCount ='+ i)的時刻並未設法觸及代碼的那一部分。 '然後跳出這個函數。 – 2012-07-11 09:33:14