2014-03-30 46 views
0

我想在循环中显示一个图像。知道路径和图像名称是好的,这个例子是如何在循环中显示一个图像,以及当图像没有找到时,浏览器显示最后一个正确的图像名称,直到找到图像名称?如何在循环中显示一个图像?

@{int j=1;} 
<img src="" /> 
<script> 
    (function() { 
     for (var i = 1; true; i++) { 
      @{ string file = "/MonitoringN/../bitmaps/" + j + ".png"; bool a = System.IO.File.Exists(file) == true; } 
      var str = "/MonitoringN/../bitmaps/" + i + ".png"; 
      var b = "@a"; 
      if (b) 
      { 
       setInterval(function() { $('img').prop('src', str); }, 1000); 
      } else { 
       i--; 
       @{j--;} 
      } 
      @{j++;} 
     } 
    }); 
</script> 

因为当我执行此代码时,我得到一个空白图像,然后我看不到页面正在加载。

非常感谢!

+0

'@'的东西来自Razor引擎..部分微软MVC的东西。 –

+0

mvc的东西似乎没有必要。你可以用JavaScript来完成所有这些。间隔总是使用不会改变的str。它不会在它的范围内。我会建议为该功能以外的柜台制作一个变量。然后让间隔调用一个方法,让str从该计数器中完成剩下的工作。 – TheCrzyMan

回答

0

我想我知道你正在尝试做的...

如果我理解正确的问题,你有图像的列表,你想尝试打开它们,直到其中一个被发现的。如果找不到图像,则要跳至下一个图像。

首先 - 我只是为了解决你的问题,把剃须刀和Javascript分离成非常独立的部分。实际上,我将完全跳过Razor。

<html> 
<head> 
<title>A test</title> 
</head> 
<body> 

<img src="http://x.invalid" id="myImage"> 

<script> 
var imgs = [ 
    "http://x1.invalid/none", 
    "https://www.google.com/images/srpr/logo11w.png", 
    "http://thedailywtf.com/Resources/Images/Primary/logo.gif" 
]; 


var imageIndex = 0; 

function tryNextImage() { 
    var img = document.getElementById("myImage"); 

    img.onerror = function() { 
    imageIndex++; 
    tryNextImage(); 
    } 

    img.src = imgs[imageIndex]; 
} 

// start the ball rolling 
tryNextImage(); 

</script> 

</body> 
</html> 
相关问题