Передача переменной в цитату в javascript

У меня есть веб-приложение, бэкенд использует Django, фронтенд - HTML5.

Я хочу передать переменную из таблицы bootstrap в цитату в javascript.

<th class ='Format_issued' data-field="book.publisher" data-formatter="renderFormat">Material Format</th>

<script>
            function renderFormat(value) {
            return '<select style="width: 7em" name="Material_format" id="Material_format" >\n' +
                '                <option value="">--Select--</option>\n' +
                '               <option value="eText" {% if ' + value + ' == "eText"  %} selected="selected" {% endif %}>eText</option>\n' +
                '                <option value="No Material" {% if value == "No Material"  %} selected="selected" {% endif %}>No Material</option>\n' +
                '              
                '            </select>'
        }
</script>

'value' - это переменная, которую я хочу передать. Но я пробовал несколько методов: 1 . использовать ' + value + ': ' <option value="eText" {% if ' + value + ' == "eText" %} selected="selected" {% endif %}>eText</option>\n'

2 . используйте значение в моей js цитате напрямую: ' <option value="No Material" {% if value == "No Material" %} selected="selected" {% endif %}>No Material</option>\n'

all не смог передать переменную значения.

Как я могу передать 'value'?

Всегда используйте шаблонный литерал javascript при работе со сложным строковым выводом. В вашем случае можно комбинировать шаблонные литералы с тернарным оператором JS следующим образом :

function renderFormat(value) {
    return `<select style="width: 7em" name="Material_format" id="Material_format">
    <option value="" ${(value === 'empty') ? 'selected="selected"' : ""}>--Select--</option>
    <option value="eText" ${(value === 'eText') ? 'selected="selected"' : ""}>eText</option>
    <option value="No Material" ${(value === 'No Material') ? 'selected="selected"' : ""}>No Material</option>
</select>`;

}

Вывод теста :

console.log(renderFormat("No Material"));
// console.log(renderFormat("eText"));
// console.log(renderFormat("empty"));

// Output
<select style="width: 7em" name="Material_format" id="Material_format">
  <option value="" >--Select--</option>
  <option value="eText" >eText</option>
  <option value="No Material" selected="selected">No Material</option>
</select>

NB : Не смешивайте литералы шаблонов Js и теги шаблонов Django. Просто совет.

Подробнее о тернарном операторе javascript, и литералах шаблона javaScript

Вернуться на верх