Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Линии "чистым" JS (https://javascript.ru/forum/misc/11465-linii-chistym-js.html)

Aspiring 25.08.2010 14:21

Создал таблицу по совету Sweet

Теперь не могу осуществить, чтобы при клике на ячейку в ячейке появлялась запись (Х и О).

Пробывал несколько способов:

cont.onclick='write(X)';

cont.onclick='document.cont.createTextNode("X")'

cont.onclick='cont = "X"'

Ничего не сработало. Какой код применить в данной ситуации?

Kolyaj 25.08.2010 14:25

Цитата:

Сообщение от Aspiring
Пробывал несколько способов:

А вы уже закончили изучать JavaScript и теперь просто пишете всякий бред наугад? Продолжайте читать статьи, в них всё доходчиво написано.

KOLANICH 25.08.2010 14:30

используй тег canvas

Sweet 25.08.2010 15:46

Цитата:

Сообщение от Aspiring
cont.onclick='write(X)';

cont.onclick='document.cont.createTextNode("X")'

cont.onclick='cont = "X"'

Жжешь! :lol: Пиши еще!!!:write:
Цитата:

Сообщение от KOLANICH
используй тег canvas

Для начала нужно хотя бы с основами разобраться

Aspiring 25.08.2010 18:16

До конца статьи не прочитал. Но все-равно требовался некий опыт создания приложении для продолжении. Искал по статьям - ничего не нашел.

Понял, что вышенаписанные мною варианты просто бред.

Мое решение:
cont=document.createElement('input');
cont.onclick='value = "X"'

Подсмотрел приложения других, там на каждую кнопку функция смены значения. Т.е. 9 (при 3X3 клеток) практический одинаковых функции только на смену значении формы. Также условия победы написаны вручную: если значение клеток (а1=1 и в1=1 и с1=1) или (а1=1 и в2=1 и с3=1) ..., то игрок один выигрывает.

Это не считается плохим тоном программирования?

В школе в подобной задаче на Pascal я бы просто задал условия по индексам:
if ( (i=j) or (i=n-j+1) or (...) ) and (a[i,j]=1) then write('Player 1 has won the round')
Вышенаписанный код неправильный :no: , но надеюсь Вы поняли, что я имел ввиду

Riim 25.08.2010 19:56

Цитата:

Сообщение от Aspiring
Т.е. 9 (при 3X3 клеток) практический одинаковых функции только на смену значении формы

обработчик вешается на всю таблицу, внутри обработчика через event.target определяем по какой ячейке кликнули, и добавляем в нее рисунок.
http://javascript.ru/tutorial/events

KOLANICH 25.08.2010 21:24

чёрт подери
создаёшь канвас
рисуешь 4 линии поделив длину и ширину на 3
и помножив на 1 и 2
вешаешь обработчик на клик
если попадает в опр интервал значит в опр клетке
проводишь 2 линии или рисуешь кружок
что сложного?

Aspiring 26.08.2010 07:50

Спасибо, но я не интересовался логикой решения задачи.

Код:

function changing(clicked){
if (clicked == 1){
spot = empty1 ;}
if (clicked == 2){
spot = empty2 ;}
if (clicked == 3){
spot = empty3 ;}
if (clicked == 4){
spot = empty4 ;}
if (clicked == 5){
spot = empty5 ;}
if (clicked == 6){
spot = empty6 ;}
if (clicked == 7){
spot = empty7 ;}
if (clicked == 8){
spot = empty8 ;}
if (clicked == 9){
spot = empty9 ;}
if (spot == -1){
if (t == 0){
xo = " O " ;
spot = 0
}
else {
xo = " X " ;
spot = 1
}
if (clicked == 1){
empty1 = spot;}
if (clicked == 2){
empty2 = spot ;}
if (clicked == 3){
empty3 = spot ;}
if (clicked == 4){
empty4 = spot ;}
if (clicked == 5){
empty5 = spot ;}
if (clicked == 6){
empty6 = spot ;}
if (clicked == 7){
empty7 = spot ;}
if (clicked == 8){
empty8 = spot ;}
if (clicked == 9){
empty9 = spot ;}
}
else {
if (spot == 0){
xo = " O ";}
if (spot == 1){
xo = " X ";}
change = 0
}
return (xo) ;
}
function change_b1(form){
clicked = 1;
changing(clicked) ;
t = turnchange(t) ;
form.b1.value = xo;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b2(form){
clicked = 2;
changing(clicked) ;
form.b2.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b3(form){
clicked = 3;
changing(clicked) ;
form.b3.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b4(form){
clicked = 4;
changing(clicked) ;
form.b4.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b5(form){
clicked = 5;
changing(clicked) ;
form.b5.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b6(form){
clicked = 6;
changing(clicked) ;
form.b6.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b7(form){
clicked = 7;
changing(clicked) ;
form.b7.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b8(form){
clicked = 8;
changing(clicked) ;
form.b8.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}
function change_b9(form){
clicked = 9;
changing(clicked) ;
form.b9.value = xo;
t = turnchange(t) ;
form.whoseturn.value = whogoesnow
win();
return;
}

На каждую кнопку по функции, на каждый клик по условии. Разве это не является неграмотным решением или такое допустимо?

Riim 26.08.2010 08:26

Цитата:

Сообщение от Aspiring
Разве это не является неграмотным решением или такое допустимо?

да, это криво.

Kolyaj 26.08.2010 08:40

Цитата:

Сообщение от Aspiring
Разве это не является неграмотным решением или такое допустимо?

Т.е. самого не смущают 9 абсолютно одинаковых функций?


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