"неожиданный конец ввода", когда шаблонизатор Jinja использовался для предоставления нескольких параметров функции onclick
Я пытаюсь запустить js функцию, используя параметры, переданные в шаблон через jinja, где item содержит строки следующего вида:
item.id = 'item1'
item.indicator = 'yes' #or no
Код шаблона:
{% for item in items %}
<!--The error is thrown by the line directly below!-->
<div class='qitem' id='{{item.id}}' onclick = change_background('{{item.indicator}}', '{{item.id}}')></div>
{% endfor %}
<script>
function change_background(indicator, id){
if (indicator == 'yes'){
document.getElementById(id).style.background='lightgreen';
}else{
document.getElementById(id).style.background='pink';
</script>
В виновной строке в моем коде '{{item.indicator}}'
выделено красным, а первый ' подчеркнут в vscode.
Несмотря на это, код работает, если используется только ОДИН аргумент, как показано ниже:
change_background('{{item.indicator}}')
(с соответствующей функцией, настроенной соответственно), но не работает, если я пытаюсь использовать два аргумента
Порядок аргументов не имеет значения. Также не имеет значения использование "{{}}"
вместо '{{}}'
.
Дополнительно, если я пытаюсь запустить две функции onclick:
<div class='qitem' id='{{item.id}}' onclick = make_green('{{item.id}}'); increment_click('{{item.indicator}}')>
выполняется только первая, а вторая игнорируется без каких-либо ошибок!
Я искал здесь и в других местах. Я не очень хочу джсонифицировать данные, которые я передаю в шаблон. Мне кажется, что есть какой-то нюанс, который я упускаю при использовании jinja.
Нюансом здесь является просто ваше использование JavaScript в HTML.
Вам понадобится
onclick="change_background('{{item.indicator}}', '{{item.id}}')"
вместо
onclick = change_background('{{item.indicator}}', '{{item.id}}')>
чтобы правильно заключить сегмент JavaScript в кавычки.
Дополнительно, если я попытаюсь запустить две функции на нажатие:
<div class='qitem' id='{{item.id}}' onclick = > make_green('{{item.id}}'); increment_click('{{item.indicator}}')>
То же самое здесь.
onclick="make_green('{{item.id}}');increment_click('{{item.indicator}}')"