Рендеринг радио кнопок
Как правильно определить переключатели с помощью Maquette, чтобы текст отображался? Если я использую <p>
элемент появляется текст, но на новой строке.
var h = maquette.h;
var dom = maquette.dom;
document.addEventListener('DOMContentLoaded', function () {
var form = h("form", [
h("input", {type: "radio", value: "5", name: "freq"}),
h("p", ["5 Hz"]),
h("input", {type: "radio", value: "10", name: "freq"}),
h("p", ["10 Hz"]),
h("input", {type: "radio", value: "15", name: "freq"}),
h("p", ["15 Hz"]),
]);
document.body.appendChild(dom.create(form).domNode);
});
<script src="//cdnjs.cloudflare.com/ajax/libs/maquette/2.4.1/maquette.min.js"></script>
Тем не менее, если я использую <br>
элемент, текст не появляется.
var h = maquette.h;
var dom = maquette.dom;
document.addEventListener('DOMContentLoaded', function () {
var form = h("form", [
h("input", {type: "radio", value: "5", name: "freq"}),
h("br", ["5 Hz"]),
h("input", {type: "radio", value: "10", name: "freq"}),
h("br", ["10 Hz"]),
h("input", {type: "radio", value: "15", name: "freq"}),
h("br", ["15 Hz"]),
]);
document.body.appendChild(dom.create(form).domNode);
});
<script src="//cdnjs.cloudflare.com/ajax/libs/maquette/2.4.1/maquette.min.js"></script>
Что я делаю неправильно?
1 ответ
Решение
Проблема с <br>
тег. Как правило, он используется как пустой, самозакрывающийся тег (либо <br>
или же <br/>
). Вы можете прочитать больше здесь, Разрешенный контент - Нет, это пустой элемент.
Вы можете поместить текст во встроенный элемент, как <span>
или событие лучше с <label>
, с помощью id
на входе и for
атрибут на этикетке. Затем поместите пустой <br>
после каждого ряда, чтобы отделить различные переключатели.
Вот само решение:
var h = maquette.h;
var dom = maquette.dom;
document.addEventListener('DOMContentLoaded', function () {
var form = h("form", [
h("input", {type: "radio", value: "5", name: "freq", id: "freq1"}),
h("label", {innerHTML: "5 Hz", "for": "freq1"}),
h("br"),
h("input", {type: "radio", value: "10", name: "freq", id: "freq2"}),
h("label", {innerHTML: "10 Hz", "for": "freq2"}),
h("br"),
h("input", {type: "radio", value: "15", name: "freq", id: "freq3"}),
h("label", {innerHTML: "15 Hz", "for": "freq3"}),
]);
document.body.appendChild(dom.create(form).domNode);
});
<script src="//cdnjs.cloudflare.com/ajax/libs/maquette/2.4.1/maquette.min.js"></script>