2011-06-01 124 views
0

再次,這些錯誤的另一個..未結束的字符串

我試着摸索得到這個提問前解決,但找不到任何會解決這個問題。

所以我有:(更新

<script type="text/javascript"> 
    $(function(){ 
     $('.episodes').live('click',function(){ 
      var id = $(this).attr('id').replace('episode_',''), 
      width = 730, 
      height = 645; 

      if(id == 3){ 
       width = 635; 
       height = 790; 
      }     

      ColdFusion.Window.create('Episode_'+id,'','/landing_pages/superhero/episode'+id+'.cfm',{width:width,height:height,center:true,draggable:false,resizable:false,modal:true}); 
     }); 
    }); 
</script> 

我試圖逃避「文\/JavaScript的」< \/SCRIPT>,但它會要麼根本不工作,並且不再顯示錯誤,因爲它不會將其識別爲javascript語句,否則將繼續拋出錯誤。

Firebug說的問題是:var id = $(this).attr('id').replace('episode_',''),,但我沒有看到那可能是一個問題。

我正在考慮在底部的create方法中轉義/,但我不認爲它會有所作爲,因爲它顯示錯誤位於頂部。

謝謝!

(更新) 我試過所有的分號問題的答案,它沒有奏效。沒有任何影響。任何其他想法?

我實際上是將它粘貼到一個CMS中,它會通過SQL,然後在我的文章中輸出它。我不明白爲什麼會導致問題,但我想這是另一回事。

更新了FIX 錯誤是使用單引號。必須將所有單引號改爲雙引號。顯然這是你將它插入數據庫時​​必須要做的事情。

最後的代碼是:

<script type="text/javascript"> 
    $(function(){ 
     $(".episodes").live("click",function(){ 
      var id = $(this).attr("id").replace("episode_",""), 
      width = 730, 
      height = 645; 

      if(id == 3){ 
       width = 635; 
       height = 790; 
      }     

      ColdFusion.Window.create("Episode_"+id,"","/landing_pages/superhero/episode"+id+".cfm",{width:width,height:height,center:true,draggable:false,resizable:false,modal:true}); 
     }); 
    }); 
</script> 
+0

你能提供更完整的錯誤嗎?如果可能的話,完整的消息和堆棧跟蹤 – Jaymz 2011-06-01 14:36:26

+0

該問題可能是另一個標籤,其中包含一個未引起關注的雙引號,其中有一些屬性出現在腳本之前。 – 2011-06-01 14:37:52

+0

我很難理解你在問什麼。你爲什麼想要逃避'text/javascript'?這是一個標準常數。在這裏添加字符不會逃脫任何事情;它只會告訴瀏覽器,這不是JavaScript - >瀏覽器將忽略具有未知內容的'script'元素。 – 2011-06-01 14:38:15

回答

4

錯誤意味着$('.episodes').live('click',function(){單引號的一個不是單引號,但別的東西(可能是反引號)。

嘗試用雙引號(")替換它們全部,因爲ASCII編碼只包含一個雙引號,但包含三個不同的單引號(''`)。

+0

謝謝,我現在就試試 – 2011-06-01 15:37:42

+0

這正是錯誤所在!謝啦 – 2011-06-01 15:41:59

5

嘗試使用分號:

<script type="text/javascript"> 
     $(function(){ 
      $('.episodes').live('click',function(){ 
       var id = $(this).attr('id').replace('episode_',''), 
       var width = 730, 
       var height = 645; 

       if(id == 3){ 
        width = 635, 
        height = 790; 
       }     

       ColdFusion.Window.create('Episode_'+id,'','/landing_pages/superhero/episode'+id+'.cfm',{width:width,height:height,center:true,draggable:false,resizable:false,modal:true}) 
      }); 
     }); 
    </script> 
+0

很好的答案。 @Michael,我相信你對於認爲你在填充一個數組,而不是寫一個常規函數感到困惑。去過也做過。 – 2011-06-01 14:39:59

+0

哈哈,當我看到這個時我不得不大笑 - 最後我完全錯過了逗號而不是分號的使用。 +1 – Jaymz 2011-06-01 14:40:39

+2

實際上,在原始代碼中'height'後面有一個分號就足夠了。用逗號分隔變量聲明就好了。 – jAndy 2011-06-01 14:42:01

2

var id = $(this).attr('id').replace('episode_',''), 
    width = 730, 
    height = 645 

存在的問題,因爲它需要在後面加上一個分號,而不是逗號。

var id = $(this).attr('id').replace('episode_',''), 
    width = 730, 
    height = 645; 

同去的內一切的

if (id == 3) {... 
+1

不,那裏不應該有分號,它是逗號分隔的聲明列表。在聲明結尾應該有一個分號,即在三次聲明之後。 – Guffa 2011-06-01 14:44:18

+0

錯過了,謝謝Guffa:固定。 – zellio 2011-06-01 14:46:11

2

你的語法是錯誤的,JavaScript的使用;終止聲明

這就是正確的解決方案

$('.episodes').live('click', function() { 
    var id = $(this).attr('id').replace('episode_', ''); 
    var width = 730; 
    var height = 645; 
    if (id == 3) { 
     width = 635; 
     height = 790; 
    } 
    ColdFusion.Window.create('Episode_' + id, '', '/landing_pages/superhero/episode' + id + '.cfm', { width: width, height: height, center: true, draggable: false, resizable: false, modal: true }); 
}); 

編輯

我的壞,你的語法是正確的了。

+1

您將'width'和'height'的聲明更改爲僅分配,這會更改其範圍。 – Guffa 2011-06-01 14:42:10

+0

我不認爲人們最近明白Javascript變量聲明.. – 2011-06-01 14:56:58

0

當我檢查JsLint中的代碼時,它不會抱怨任何未終止的字符串,只會在每個語句結尾處省略分號。這可能會帶來一些意想不到的後果,所以很可能是錯誤消息的原因。

認沽分號末OCH每個語句:

<script type="text/javascript"> 
    $(function(){ 
    $('.episodes').live('click',function(){ 
     var id = $(this).attr('id').replace('episode_',''), 
     width = 730, 
     height = 645; 

     if(id == 3){ 
     width = 635; 
     height = 790; 
     }     

     ColdFusion.Window.create('Episode_'+id,'','/landing_pages/superhero/episode'+id+'.cfm',{width:width,height:height,center:true,draggable:false,resizable:false,modal:true}); 
    }); 
    }); 
</script> 
+0

我只是試過了,它仍然是一樣的錯誤。 – 2011-06-01 14:57:23

+0

@Michael Stone:那麼你的錯誤就在你展示的代碼之外的某個地方。該代碼本身不能產生該錯誤。 – Guffa 2011-06-01 17:40:22