2010-04-13 53 views
2

我在XSL文檔中使用JavaScript for循環有一個特殊問題。這裏是:XSL文檔中的JavaScript For循環

我在點擊CheckBox時調用JavaScript函數。下面是我想在javascript函數做::

function SeelctAll() 
{ 
    for(var cnt = 0; cnt < 100; cnt++) 
    { 
      //Business Logic here. 
    } 
} 

爲此,我換成<&lt;和嘗試。我收到一個錯誤,說「對象預期」。然後,我把整個功能放在一個<![CDATA[部分,然後嘗試。儘管如此,我仍然得到了「Obejct Expected」錯誤。

對此的任何幫助將是非常可觀的。

+0

我認爲我們需要更多關於這個問題的細節。你能提供XSL文檔的相關部分嗎? '//這裏的業務邏輯'部分是什麼?這似乎是問題的起源,所以這也是相關的。 – 2010-04-13 15:04:41

回答

0

工作對我來說:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 
    <xsl:output method="html" encoding="utf-8" indent="yes"/> 

    <xsl:template match="/"> 
    <html> 
     <head> 
     <script type="text/javascript"><![CDATA[ 
      function SelectAll() { 
      var x = 0; 
      for(var cnt=0; cnt<100; cnt++) { 
       x = cnt; // whatever 
      } 
      alert(x); 
      }    
      ]]> 
     </script> 
     </head> 
     <body> 
     <div onclick="SelectAll()">Click!</div> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

這產生:

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script type="text/javascript"> 
    function SelectAll() { 
     var x = 0; 
     for(var cnt=0; cnt<100; cnt++) { 
     x = cnt; // whatever 
     } 
     alert(x); 
    } 
    </script> 
</head> 
<body> 
    <div onclick="SelectAll()">Click!</div> 
</body> 
</html> 

,它提醒了預期的 「99」。

+0

我只是在循環中有一個alert語句。 BTW我有多個xsl:模板,我沒有標籤。我直接有一個

標籤。 – Nagendra2010-04-14 06:58:02

+1

@Nagendra:而且...這個答案是什麼意思?你的不工作,這是。找出差異,得出結論。 – Tomalak 2010-04-14 07:02:25

+1

感謝您的回覆。我找到了差異,並用代碼中的代碼替換了我的代碼中的 Nagendra 2010-04-14 14:27:11

0

我們需要在這裏看到更多的代碼,以及您使用什麼流程將XSL文檔中的JavaScript轉換爲HTML頁面中的JavaScript以供執行。雖然&lt;轉義和CDATA部分都是在XML文件中包含帶外字符的有效方法,但是當您到達瀏覽器端時,您可能將頁面處理爲HTML而不是native-XML,此時規則是不同的,並且在生成HTML時需要注意確保XSL轉換的輸出可以被瀏覽器接受。

看看是否真的是<造成的麻煩,而不是消除了'業務邏輯',通過完全避免它。例如。將其替換爲100>cnt之類的內容。 (在任何情況下,通常情況下,您都希望腳本邏輯遠離HTML頁面的主體,最好在外部腳本中進行,您不必擔心將規則嵌入到另一個腳本中標記語言)

0

我相信問題要簡單得多。您將該功能命名爲SeelctAll()。我認爲你正在調用錯誤的功能。