"Странное" поведение таблицы
Здравствуй, JavaScript-мир!
Не получается завершить задуманное: случайные изображения выстраиваются в ряд, вместо того, чтобы отображаться в таблице 2×2. Пожалуйста, помогите разобраться: <!DOCTYPE html> <html> <head> <style> [data-id="girl"] { background-image:url(https://loremflickr.com/100/100/girl?random=1); width: 100px; height: 100px; } [data-id="boy"] { background-image:url(https://loremflickr.com/100/100/boy?random=1); width: 100px; height: 100px; } [data-id="cat"] { background-image:url(https://loremflickr.com/100/100/cat?random=1); width: 100px; height: 100px; } [data-id="dog"] { background-image:url(https://loremflickr.com/100/100/dog?random=1); width: 100px; height: 100px; } [data-id="car"] { background-image:url(https://loremflickr.com/100/100/car?random=1); width: 100px; height: 100px; } [data-id="house"] { background-image:url(https://loremflickr.com/100/100/house?random=1); width: 100px; height: 100px; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> </script> <script type="text/javascript"> $(window).load(function(){ $("td.Image").hide(); var divs = $("td.Image").get().sort(function(){ return Math.round(Math.random())-0.5; }).slice(0,4) $(divs).appendTo(divs[0].parentNode).show(); }); </script> </head> <body> <table align="center" cellspacing="0" cellpadding="0"> <tr> <td class="Image" data-id="girl"></td> <td class="Image" data-id="boy"></td> <td class="Image" data-id="cat"></td> </tr> <tr> <td class="Image" data-id="dog"></td> <td class="Image" data-id="car"></td> <td class="Image" data-id="house"></td> </tr> </table> </body> </html> :help: |
Ну так вы выстраиваете их после сортировки без учета того, что они были в разных строках (<tr>). Все лепите в одну строку.
К тому же вы берете из "отсортированного" массива только первые 4 элемента и их потом лепите в одну строку и только к ним применяете .show(). |
Voraa, видимо, так ... но пока самостоятельно исправить не получается :help:
|
Цитата:
|
<!DOCTYPE html> <html> <head> <style> [data-id="girl"] { background-image:url(https://loremflickr.com/100/100/girl?random=1); width: 100px; height: 100px; } [data-id="boy"] { background-image:url(https://loremflickr.com/100/100/boy?random=1); width: 100px; height: 100px; } [data-id="cat"] { background-image:url(https://loremflickr.com/100/100/cat?random=1); width: 100px; height: 100px; } [data-id="dog"] { background-image:url(https://loremflickr.com/100/100/dog?random=1); width: 100px; height: 100px; } [data-id="car"] { background-image:url(https://loremflickr.com/100/100/car?random=1); width: 100px; height: 100px; } [data-id="house"] { background-image:url(https://loremflickr.com/100/100/house?random=1); width: 100px; height: 100px; } </style> <script type="text/javascript"> window.addEventListener("DOMContentLoaded", () => { const tab = document.querySelector('table'); const cells = [...document.querySelectorAll('td.Image')]; cells.sort(() =>Math.round(Math.random())-0.5); tab.rows[0].append(...cells.slice(0,3)); tab.rows[1].append(...cells.slice(3)); }) </script> </head> <body> <table align="center" cellspacing="0" cellpadding="0"> <tr> <td class="Image" data-id="girl"></td> <td class="Image" data-id="boy"></td> <td class="Image" data-id="cat"></td> </tr> <tr> <td class="Image" data-id="dog"></td> <td class="Image" data-id="car"></td> <td class="Image" data-id="house"></td> </tr> </table> </body> </html> |
Цитата:
|
Если учитесь НОВОМУ, то забудьте про jquery. Он слишком старый.
|
Цитата:
tab.rows[0].innerHTML = ''; tab.rows[0].append(...cells.slice(0,2)); tab.rows[1].innerHTML = ''; tab.rows[1].append(...cells.slice(2,4)); |
Цитата:
Voraa, всё отлично сработало... большое Вам спасибо за ценную помощь! :dance: |
Voraa, а какую строку следовало бы прописать в ваш код, чтобы кнопка <button id="btn">New</button> создавала новую комбинацию изображений в таблице?
*Самостоятельно не осилил :cray: * |
Часовой пояс GMT +3, время: 19:41. |