2016-08-04 42 views
0

我在页面底部有一个div,其中包含基于页面变量而更改的图像。这里是我的代码来设置图像:找不到图像,但src正确

<div> 
    <p>Data from @ViewBag.site.</p> 
    <div id="logo"></div> 
</div> 

<script> 
     var site = '@(ViewBag.site)'; 
     var elem = document.createElement("img"); 
     switch(site){ 
      case "WeatherUnderground": 
       elem.src = '~/Images/wunderground.jpg'; 
       break; 
      case "Forecast.io": 
       elem.src = '~/Images/fio.jpg'; 
       break; 
      case "NOAA": 
       elem.src = '~/Images/noaa.png'; 
       break; 
      case "WeatherUnlocked": 
       elem.src = '~/Images/wunlocked.jpg'; 
       break; 
      case "APIXU": 
       elem.src = '~/Images/apixu.jpg'; 
       break; 
      case "OpenWeatherMap": 
       elem.src = '~/Images/owm.jpg'; 
       break; 
     } 
     elem.setAttribute("height", 100); 
     elem.setAttribute("width", 133); 
     elem.setAttribute("alt", site); 
     document.getElementById("logo").appendChild(elem); 
</script> 

当我访问这个网页,图像显示不出来(而不是,替代文本,再加上黑色方形/ X组合显示出来)。当我检查替代图像时,我发现它具有正确的来源。如果我将源路径复制到浏览器中,它会将我带入图像,所以我知道源代码是正确的。但是,图片没有显示出来,所以显然有些事情是错误的。有什么想法吗?

+0

当您尝试加载图像时,是否在控制台的“网络”选项卡中看到任何错误? – raphv

+0

您可以在开发人员工具上打开控制台并写出您在那里看到的消息吗? Chrome:PC:Ctrl + Shift + J \t Mac:Cmd + Opt + – mikipero

+1

有时,大写会导致404的资产。我看到,图像中有大写'I'。你可以检查是否确实是正确的。 – ankitjain11

回答

0

您正在对不会更改的字符串执行switch语句。

var site = '@(ViewBag.site)'; 

但是在你的switch语句中没有这个字符串的情况,所以elem.src从不设置。

+0

' @(ViewBag.site)'最有可能是一个占位符,一旦模板已经被预处理(这就是我认为的Razor语法)就会被替换掉。 – Arnauld

+0

直到现在,我从来没有听说过剃刀,所以想用纯JavaScript来思考。这是否意味着我们需要请求更多信息? – RemanBroder

+0

是的。我认为这个问题是其他地方的,因为OP说他检查了图片并看到了正确的修改过的源代码。无论如何,我们肯定需要更多信息。 – Arnauld