30.07.2017, 17:28
|
Аспирант
|
|
Регистрация: 02.07.2017
Сообщений: 83
|
|
двухмерный массив(поле)
Здравствуйте, нашел вот такой код :
for (var i=0; i<9; i++) {
document.getElementById('game').innerHTML+='<div class="block"</div>';
}
Он вставляет девять блоков в 'game'.
Хочу сделать, чтобы двухмерный массив вставлял также эти блоки, допустим три на три, ну как в крестики-нолики, пишу это:
function pole() {
for (var i=0; i<3; i++) {
kvadratiki[i]=[];
for (var j=0; j<i; j++) {
kvadratiki[i][j] = document.getElementById('game').innerHTML+='<div class="block"></div>';
};
};
};
он рисует только три блока, а если делаю j<3, тогда всё нормально, вопрос почему нельзя привязать j к i
Последний раз редактировалось shoopik, 30.07.2017 в 17:31.
|
|
30.07.2017, 17:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от shoopik
|
вопрос почему нельзя привязать j к i
|
А вы как думаете? Вместо kvadratiki[i][j] = .... выводите в консоль значения j и i, наступит прозрение.
|
|
30.07.2017, 17:52
|
Аспирант
|
|
Регистрация: 02.07.2017
Сообщений: 83
|
|
Сообщение от laimas
|
А вы как думаете? Вместо kvadratiki[i][j] = .... выводите в консоль значения j и i, наступит прозрение.
|
если j<i, тогда выводит i=3 j=2, проблема в том, что j=2 ?
если я правильно понял, при написании заместо 'j++' - '++j' должно наращиваться до 3, но все равно 2 там.
если ставлю (var j=0; j<(i+1); j++) - получается j=3, но тогда выводит всего 6 блоков вместо 9
|
|
30.07.2017, 18:16
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от shoopik
|
если j<i, тогда выводит i=3 j=2, проблема в том, что j=2 ?
|
Проблема в том, что i изменяется, что по выводу в консоли не понятно что-ли, что будет всего три итерации и почему?
Что прописать во внутреннем цикле j<3; религия не позволяет и надо извращаться или что?
|
|
30.07.2017, 18:26
|
Аспирант
|
|
Регистрация: 02.07.2017
Сообщений: 83
|
|
Сообщение от laimas
|
Проблема в том, что i изменяется, что по выводу в консоли не понятно что-ли, что будет всего три итерации и почему?
Что прописать во внутреннем цикле j<3; религия не позволяет и надо извращаться или что?
|
ну я выводил console.log(i) и также с (j), либо [i], у меня выводилось просто 3, не понял я по консоли.
Сообщение от laimas
|
Что прописать во внутреннем цикле j<3; религия не позволяет и надо извращаться или что?
|
Да просто не понял почему не работает с i...
|
|
30.07.2017, 18:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от shoopik
|
Да просто не понял почему не работает с i...
|
<div id="as"></div>
<script>
for (var i=0; i<3; i++) {
for (var j=0; j<i; j++) {
document.getElementById('as').innerHTML += 'j = ' + j + ', i = ' + i + ', j < i = ' + (j<i) + '<br>';
}
}
</script>
|
|
30.07.2017, 18:41
|
Аспирант
|
|
Регистрация: 02.07.2017
Сообщений: 83
|
|
Сообщение от laimas
|
<div id="as"></div>
<script>
for (var i=0; i<3; i++) {
for (var j=0; j<i; j++) {
document.getElementById('as').innerHTML += 'j = ' + j + ', i = ' + i + ', j < i = ' + (j<i) + '<br>';
}
}
</script>
|
спасибо ))
|
|
30.07.2017, 18:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
<div id="as"></div>
<script>
function pole(side) {
for (var i=0; i<side; i++) {
for (var j=0; j<side; j++) {
document.getElementById('as').innerHTML += 'j = ' + j + ', i = ' + i + ', j < i = ' + (j<side) + '<br>';
}
}
}
pole(3);
</script>
Иначе от функции никакой пользы.
|
|
30.07.2017, 18:47
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
shoopik,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
div.block {
height: 50px;
width: 50px;
background-color: #FFFF00;
margin: 2px;
}
#game{
display: flex;
background-color: #0000FF;
width: 162px;
}
</style>
</head>
<body>
<div id="game"></div>
<script>
function pole(rows, cols, el) {
el = document.getElementById(el)
for (; rows--;) {
var div = document.createElement("div");
for (var j=0; j<cols; j++) {
var d = div.cloneNode();
d.classList.add("block");
div.appendChild(d);
};
el.appendChild(div)
};
};
pole(3, 3, "game")
</script>
</body>
</html>
|
|
30.07.2017, 19:15
|
Аспирант
|
|
Регистрация: 02.07.2017
Сообщений: 83
|
|
Сообщение от рони
|
function pole(rows, cols, el) {
el = document.getElementById(el)
for (; rows--;) {
var div = document.createElement("div");
for (var j=0; j<cols; j++) {
var d = div.cloneNode();
d.classList.add("block");
div.appendChild(d);
};
el.appendChild(div)
};
};
pole(3, 3, "game")
|
И вам спасибо за интересный код
|
|
|
|