2011-03-24 17 views
-1

這一切似乎很好,只是真正奇怪的是,當我嘗試引用var與.html('g'+索引)它引發對象預期的錯誤。我猜構建變種不是最好的事情?使用.html時奇怪的對象預計錯誤

var g0 = "<?php getFiles("gallery/Audience"); ?>"; 
var g1 = "<?php getFiles("gallery/Exhibition"); ?>"; 
var g2 = "<?php getFiles("gallery/registration"); ?>"; 
var g3 = "<?php getFiles("gallery/Speakers"); ?>"; 

$(".galleryButton").each(function (index) { 
    $(this).click(function(){ 
     $('#galleria').html();        
     $('#galleria').html('g'+index); 
     initiateGallery(); 
    }).mouseover(function() { 
     $(this).css('cursor', 'pointer'); 
     $(this).css('backgroundColor', '#002E53'); 
    }).mouseout(function(){ 
     $(this).css('backgroundColor', '#000'); 
    }); 
}); 
+0

你想用'$('#galleria')。html();''來完成什麼? – 2011-03-24 10:25:53

回答

1

你可以使用eval來獲取變量GX的價值。

$(this).click(function(){ 
    $('#galleria').html();        
    $('#galleria').html(eval('g'+index)); 
    initiateGallery(); 
}) 

但是,與eval是邪惡的,你應該使用一個開關的情況下獲得的變量:

$(this).click(function(){ 
    $('#galleria').html(); 
    var contents; 
    switch(index) { 
     case 1: 
      contents = g1; 
      break; 
     case 2: 
      contents = g2; 
     ... 
    } 
    $('#galleria').html(contents); 
    initiateGallery(); 
}) 

我猜你想清除#galleria的HTML這一行:

$('#galleria').html(); 

你應該傳遞一個空字符串到HTML()來清除內容:

$('#galleria').html(''); 
+0

我同意你的解決方案,但我不認爲在任何情況下'eval'都是魔鬼,它應該被明智地使用。 – 2011-03-24 10:41:09

+0

我同意有些情況下eval是最好的選擇。但是,我所看到的eval的大部分用途並不是明智使用eval的情況。 – Oscar 2011-03-24 10:44:36

+0

Ahhhh yes試圖清除html,但總是錯過('')多數民衆贊成工作更好... – MarkBeharrell 2011-03-24 11:30:12

0

如果您想要的文本字符串'g'+index插入到HTML然後我可能會建議做...

$('#galleria').html('<span>g'+index+'</span>'); 
+0

你甚至不知道#galleria是什麼,它可能已經是一個跨度。 – 2011-03-24 10:36:06

0

您應該使用eval方法: $('#galleria')。html(eval('g'+ index));