2013-07-03 137 views
2

我是JavaScript新手。 This is a fiddle與我的代碼。無法呼叫測試()

如果我刪除CDATA那麼它適用於小提琴正常,但在XHTML編輯器創建問題,如Eclipse:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

這是我的JavaScript:

<![CDATA[ 
    function test() { 
     alert(document.getElementById("divId")); 
     var regex = new RegExp('this',"gi"); 
     document.getElementById("divId").innerHTML 
     = document.getElementById("divId").innerHTML.replace(regex, 
      function(matched) 
      { 
       return '<span class=\'highlight\'>' + matched + '</span>'; 
      }); 
    } 
]]> 

這裏是有問題的<div>

<div id="divId"> 
    This is the text This is the text This is the text This is the text 
    This is the text This is the text This is the the text 
</div> 

我無法致電test()功能。有什麼建議麼?

+0

什麼是 「無法」 是什麼意思?你有錯誤嗎?你是怎麼稱呼它的? – Zim84

+5

我的建議?停止使用xHTML(特別是Transitional)並切換到HTML5。對於初學者,您不需要醜陋的CDATA評論符號。 ;) –

+0

由無法我的意思functio不是calls.i沒有發現任何錯誤 – viki

回答

5

只是評論CDATA線:

... 
// <![CDATA[ 
... 
// ]]> 
+0

我不能評論,因爲我在我的問題中提到..看到這個http://stackoverflow.com/questions/17443461/javascript-code-not-working-in-jsf-xhtml-page/17443517?noredirect=1#comment25340917_17443517 – viki

+0

@viki你可以。這些註釋僅適用於JavaScript,XML解析器仍可識別CDATA部分。 – Uooo

+0

@viki出於好奇,你甚至讀過[關於CDATA的維基百科文章](http://en.wikipedia.org/wiki/CDATA)我鏈接了我的[最後回答](http://stackoverflow.com/ a/17443517/1328300)你以前的問題?它明確地[在XHTML中顯示它的用法](http://en.wikipedia.org/wiki/CDATA#Use_of_CDATA_in_program_output)。請確保你瞭解**爲什麼它以這種方式工作。 – Uooo

3

圍之間/ * * /這樣

/*<![CDATA[*/ 

      function test(){ 
     alert(document.getElementById("divId")); 
     var regex = new RegExp('this',"gi"); 
     document.getElementById("divId").innerHTML  
     =document.getElementById("divId").innerHTML.replace(regex, function(matched) 
     { 
      return '<span class=\'highlight\'>' + matched + '</span>'; 
     }); 


    } 

/*]]>*/