JavaScript для цикла в документе XSL - PullRequest
2 голосов
/ 13 апреля 2010

У меня есть особая проблема с циклом JavaScript for в документе XSL. Вот оно:

Я вызываю функцию JavaScript по щелчку CheckBox. Вот что я хотел сделать в функции JavaScript:

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

Для этого я заменил < на &lt; и попробовал. Я получил сообщение об ошибке «Ожидается объект». Затем я вложил всю функцию в секцию <![CDATA[ и попробовал. Тем не менее, я получил ту же ошибку "Ожидается Obejct".

Любая помощь по этому вопросу будет весьма заметна.

Ответы [ 3 ]

0 голосов
/ 13 апреля 2010

Работает для меня:

<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 голосов
/ 28 февраля 2012

Я считаю, что проблема намного проще. Вы назвали функцию SeelctAll(). Я думаю, что вы вызываете не ту функцию.

0 голосов
/ 13 апреля 2010

Нам нужно увидеть немного больше кода здесь и узнать, какой процесс вы используете для преобразования JavaScript в XSL-документе в JavaScript на HTML-странице для выполнения. Хотя &lt; экранирование и раздел CDATA являются допустимыми способами включения внеполосных символов в файл XML, когда вы переходите на сторону браузера, вы, вероятно, обрабатываете страницу как HTML, а не как native-XML, при этом отметьте, что правила отличаются, и ваше поколение HTML должно быть осторожно, чтобы обеспечить приемлемость вывода для преобразования XSL для браузеров.

Посмотрите, действительно ли это проблема <, а не исключенная «бизнес-логика», избегая ее полностью. например. замените его на что-то вроде 100>cnt.

(В любом случае, в общем случае вы хотите не допускать логику сценариев вне тела HTML-страницы. Лучше использовать внешний сценарий, где вам не нужно беспокоиться о правилах встраивания его в другую разметку. язык.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...