Передача переменной в цитату в 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