Как установить переменную равной другой переменной в скрипте Apps Script?

Я только начал изучать Apps Script. Кажется, я не могу установить для iAsString значение i, которое было объявлено внутри цикла скриптлета for. Я сделал новый html-документ и сузил его, когда я добавляю код с помощью iAsString, он перестает работать.

Это фрагмент из него:

<body>
    <? var data = getData(); ?>
    <? var html_data = getHTMLData(); ?>

    <div id='scoreboard'></div>
    
    <script>
      const scoreboard = document.getElementById("scoreboard");
      let html = "<p>My new scoreboard.</p>";
      scoreboard.insertAdjacentHTML("beforeend", html);

      window.onload = function() {
        <? for (var i = 0; i <= +data[0][0]; i++) { ?>
          var iAsString = <? i.toString() ?>;
          var newRound = '<div id = "round_'+iAsString+'"></div>';
          scoreboard.insertAdjacentHTML("beforeend", newRound);

          const round = document.getElementById("round_"+iAsString);

          <? for (var j = 0; j <= 200; j++) { ?>
            round.innerHTML += <? html_data[j][i+1] ?>;
          <? } ?>
        <? } ?>
      }

Пробовал брать <? i.toString() ?> в кавычки '<? i.toString() ?>', не получается.

Обновлять: Основной код в моем файле main.gs

function doGet() {
  return HtmlService.createTemplateFromFile('reprex').evaluate();
}

Где reprex.html — html-файл

Я переделал код, чтобы включить только код, который не работает.

<!DOCTYPE html>
<html>
  <head>
    <base target = "_top">
  </head>
  <body>
    <div id='scoreboard'></div>
    
    <script>
      const scoreboard = document.getElementById("scoreboard");

      window.onload = function() {
        <? for (var i = 0; i <= 2; i++) { ?>
          var iAsString = <? i.toString() ?>;
          var newRound = '<div id = "round_'+iAsString+'"></div>';
          scoreboard.insertAdjacentHTML("beforeend", newRound);
        <? } ?>
            }
    </script>
  </body>
</html>

Когда код развернут, и я открываю проверку скрипта https://script.google.com/macros/s/AKfycbwtyD0rP5tJlRzsS8S8nkHEJmi6_NS0mv_p_5tMiHag4sHD1nZn_-sddtBx3WLI5z_ngg/exec внутри div под названием scoreboard нет разделов

Но когда я изменяю код внутри insertAdjacentHTML() случайным кодом, он работает

<!DOCTYPE html>
<html>
  <head>
    <base target = "_top">
  </head>
  <body>
    <div id='scoreboard'></div>
    
    <script>
      const scoreboard = document.getElementById("scoreboard");

      window.onload = function() {
        <? for (var i = 0; i <= 2; i++) { ?>
          scoreboard.insertAdjacentHTML("beforeend", "<p>this works</p>");
        <? } ?>
            }
    </script>
  </body>
</html>

Когда вы открываете его для проверки после его развертывания, https://script.google.com/macros/s/AKfycby5A3CV_ejIQmXyS-m5IBagfM_OKlwRPtVvQouyvUBBhLWBsmZH2evYGlGsiXIpNysKWg/exec код появляется внутри блока таблицы результатов.

Любая помощь будет оценена по достоинству!

Пожалуйста, добавьте минимальный воспроизводимый пример (вы должны включить код, который вызывает и оценивает HtmlService.HtmlTemplate). P.S. при добавлении тегов к вопросу просмотрите отрывок тега scriptlet для вопросов о другом типе скриптлетов.

Rubén 13.02.2023 04:46

Извините, я новичок в этом, я добавил воспроизводимый пример вместе с фотографиями проблемы

Eric Huang 13.02.2023 13:38
Типы данных JavaScript
Типы данных JavaScript
В JavaScript существует несколько типов данных, включая примитивные типы данных и ссылочные типы данных. Вот краткое объяснение различных типов данных...
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик Модуль flexbox, также известный как гибкий модуль разметки box, помогает эффективно проектировать и...
Введение в раздел &quot;Заголовок&quot; в HTML
Введение в раздел "Заголовок" в HTML
Говорят, что лучшее о человеке можно увидеть только изнутри, и это относится и к веб-страницам HTML! Причина, по которой некоторые веб-страницы не...
Как React Helmet спасает меня при разделении файлов CSS?
Как React Helmet спасает меня при разделении файлов CSS?
Многие новички могут столкнуться с проблемой, когда одна страница с CSS наследует свойства от другой страницы с другим CSS. У меня было много проблем,...
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Руководство для начинающих по веб-разработке: HTML, CSS и JavaScript.
Руководство для начинающих по веб-разработке: HTML, CSS и JavaScript.
Добро пожаловать, мои коллеги по интернету, в захватывающий мир веб-разработки! Дорогие мои начинающие, я здесь, чтобы провести вас через основы HTML,...
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте это вместо этого.

<html>
  <head>
    <base target = "_top">
  </head>
  <body>
    <div id='scoreboard'></div>
    
    <script>
      const scoreboard = document.getElementById("scoreboard");

      window.onload = function() {
        <? for (var i = 0; i <= 2; i++) { ?>
          var newRound = "round_"+<?= i ?>;
          newRound = '<div id = "'+newRound+'"><p>'+newRound+'</p></div>';
          scoreboard.insertAdjacentHTML("beforeend", newRound);
        <? } ?>
            }
    </script>
  </body>
</html>

Вы могли бы сделать так же легко, прежде чем страница будет обслуживаться и избежать загрузки.

<html>
  <head>
    <base target = "_top">
  </head>
  <body>
    <div id='scoreboard'>
    <? for (var i = 0; i <= 2; i++) { ?>
      <div id = "round_"+<?= i ?>>
        <p>round_<?= i ?></p>
      </div>
    <? } ?>
    </div>
  </body>
</html>

ДАСССС!!!!! СПАСИБО БОЛЬШОЕ!!!!!! ЭТО РАБОТАЕТ!!!!!!!!!! Я не знал, что вы можете использовать <?= вот так!

Eric Huang 14.02.2023 00:01

Другие вопросы по теме