Tengo una aplicación web, backend usando Django, frontend usando HTML5.
Quiero pasar una variable de la tabla de arranque a la cita en 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> 'valor' es la variable que quiero pasar. Pero he probado varios métodos: 1. use ' + valor + ': ' <option value="eText" {% if ' + value + ' == "eText" %} selected="selected" {% endif %}>eText</option>\n'
2 . use el valor en mi cotización js directamente: ' <option value="No Material" {% if value == "No Material" %} selected="selected" {% endif %}>No Material</option>\n'
all no pudo pasar la variable de valor.
¿Cómo podría pasar 'valor'?
Utilice siempre el literal de la plantilla de javascript cuando maneje una salida de cadena compleja. En su caso, es posible combinar literales de plantilla con el operador ternario JS de esta manera:
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>`;}
Salida de prueba:
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: no mezcle literales de plantilla Js y etiquetas de plantilla Django. Solo un consejo.
Más información sobre el operador ternario de JavaScript y los literales de plantilla de JavaScript