Отправить значение onclick в функцию

#google-apps-script

#google-apps-script

Вопрос:

Я пытаюсь отправить значение моего onClick в функцию. Он работает правильно, если «li» закодирован вручную. Однако это не сработает, если «li» находится в цикле и оно было добавлено в div.

Вот код, который я уже пробовал: (также пытался изменить ‘ to » в onclick=myFunction(‘i’))

 <div id="side_menubar">
    <ul>
    <script>

    <? var menu = SpreadsheetApp.openById("id here").getSheetByName("Menu");

   var range = menu.getRange("B1:B").getValues();
   var lRow = range.filter(String).length;?> 
     <?for(var i = 2; i <= lRow; i  ){?>
     $('#side_menubar').append($('<li class="menu" onclick="myFunction('i')"><?= menu.getRange("B"   i).getValues(); ?></li>'))
         <? } ?>    
   function myFunction(x) {
   document.getElementById("content_header").innerHTML = "x";
   document.getElementById("id01").style.display = "block";
   }   
   </script>
   </ul>    
   </div>
  

Я ожидаю, что значение в onClick должно быть отправлено в функцию.

Ответ №1:

Я не очень часто их использую

но я думаю, что этот

$('#side_menubar').append($('<li class="menu" onclick="myFunction('i')">

должно быть так

$('#side_menubar').append($('<li class="menu" onclick="myFunction(<?=i?>)">

Комментарии:

1. Привет, Купер, спасибо за идею. Это не работает, но когда я меняю его на это

Ответ №2:

Привет, Купер, спасибо за идею. Это не работает, но когда я меняю его на это, это работает: $('#side_menubar').append($('<li class="menu" onclick="myFunction(<?=i?>)">

Я просто удалил одинарную кавычку, потому что я думаю, что она ломается или читается как закрывающая кавычка для li для добавления.

Комментарии:

1. Приведенный выше ответ работает, и он отправит значение в функцию. функция myfunction(х) { документе.метод getElementById(«content_header»).innerHTML будет = х; } однако, когда я попытался сделать текстовое значение, используя это: функции myfunction(х) { документе.метод getElementById(«content_header»).innerHTML будет = <?= menu.getRange(«B» x).getValues(); ?>; } Я хотел бы уточнить, если это допускается?

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

3. Означает ли это, что нет решения моей проблемы? Или есть какая-либо альтернатива для этого?

4. Вы могли бы загрузить его на сервер до его отображения в браузере или сгенерировать его на сервере с помощью вызова серверной функции window.onload или $(function(){}); Вы можете вызвать сервер с помощью google.script.run.onSuccessHandler().serversidefunctionname() и заставить эту функцию вернуть HTML и загрузить его с помощью Javascript. Вам следует прочитать документацию по сценарию Google Apps.