Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как зафиксировать кнопки чтобы они оставались на одном месте? (https://javascript.ru/forum/dom-window/69324-kak-zafiksirovat-knopki-chtoby-oni-ostavalis-na-odnom-meste.html)

mikefromru 14.06.2017 20:22

Как зафиксировать кнопки чтобы они оставались на одном месте?
 
У меня есть небольшая функция которая генерирует кнопки из массива. Из массива берутся по четыре елемента. После нажатия на любую кнопку, добавляется в поле её(кнопки) значение...... Когда я нажимаю на кнопку то следующие четыре кнопки спускаются вниз и так далее. Как мне это исправить? Нужно чтоб они были на одном месте, не сползали вниз. Вот здесь проблема как я понял кроется, но если это закоментировать то мои кнопки не идут по две в ряд. document.getElementById('_buttons').appendChild(br )

here is my code:
window.addEventListener("DOMContentLoaded", function() {
		var x = 0;
		function genButtons(a) {
		
            var parent = document.getElementById('_buttons'),
            inp = parent.querySelectorAll("[id^='b']");
            [].forEach.call(inp, function(btn){
                parent.removeChild(btn)
            });
            a.slice(0, 4).forEach(function(str, x){
                var btn = document.createElement("input");
                var br = document.createElement("br");
                btn.id = "b" + x;
                btn.value = str;
                btn.type = "button";
                btn.className = "btns";
                // здесь я делаю по две кнопки в ряд
                // но после нажатия на любую из кнопок, следующие кнопки спускаются вниз
                if ((x - 2)%2 == 0) {
                    document.getElementById('_buttons').appendChild(btn)
                    document.getElementById('_buttons').appendChild(br)
                }
                parent.appendChild(btn)

                btn.addEventListener("click", function(){
                    genButtons(a.slice(4))
                    var valueForm = myform.field.value += ' ' + this.value;
                    //  здесь что-нибудь делаю

                })
            })
		}
	var something = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',
    'eleven', 'twelve', 'thriteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty']
	genButtons(something)
})


<body style="background: #2B3D52">
<center>
    <form id="myform" onsubmit="foo(); return false;" name='myform' >{% csrf_token %}
        <input id="text" name="field" type="text" autocomplete="off" autofocus="on">
    </form>
    <div id="_buttons"></div>
</center>
</body>

j0hnik 14.06.2017 22:12

document.getElementById('_buttons').appendChild(br )
убрать вот эту строку!

mikefromru 14.06.2017 22:19

Цитата:

Сообщение от j0hnik (Сообщение 455491)
document.getElementById('_buttons').appendChild(br )
убрать вот эту строку!

Но тогда кнопки по две в ряд не идут.

рони 14.06.2017 22:43

mikefromru,
1 способ: перенести строку 12 в строку 2.
2 способ: дополнить селектор в строке 6.

mikefromru 14.06.2017 23:04

Цитата:

Сообщение от рони (Сообщение 455498)
mikefromru,
1 способ: перенести строку 12 в строку 2.

Спасибо!

рони 14.06.2017 23:15

mikefromru,
2
inp = parent.querySelectorAll("[id^='b'], #_buttons br");


Часовой пояс GMT +3, время: 09:24.