"ООП" в javascript

 
0
 
JavaScript
ava
Logree | 26.07.2007, 23:45
вот прочитал книгу JS за 24 часа... и там есть упражнение вроде напишем игру покер...
но я решил сначала написать сам а потом посмотреть чем мой код будет от того отличаться...

сначала решил написать хотябы раздачу рандомных карт..
тоесть есть картинки карт с именами 10_4.gif первое число-старшинство второе масть...
написал вот это

и сразу маза...


// _CONSTRUCT
function poker(countUsers,cost) {
this.countUsers = countUsers;
this.cost = cost;
this.i = 0;
this.getCard = getCard;
this.impotant = 0;
this.mast = 0;
}

// Получение случайной карты
function getCard() {
for (this.i=0;this.i<10;this.i++) {

this.mast = Math.floor(random()*4)+1;

this.impotant = Math.floor(random()*14);

document.write("<div id='uCard"+this.i+"'><img src='i/"+this.mast+"_"+this.impotant+".gif'></div>");
}

}
obj = new poker();
obj.getCard();

дебагер netscapa пишет


Error: random is not defined
Source File: file:///C:..../Poker/script.js
Line: 19

почему...?
Comments (7)
ava
Zeroglif | 26.07.2007, 23:27 #
Цитата (Logree @ 26.7.2007, 22:45 findReferencedText)
почему...?


Math.random();
ava
Logree | 27.07.2007, 00:00 #
я думал это не обязательно... а в каких случаях нужно указывать String. ?
ava
Zeroglif | 27.07.2007, 00:31 #
Цитата (Logree @ 27.7.2007, 00:00 findReferencedText)
я думал это не обязательно... а в каких случаях нужно указывать String

Нужно, когда трогаем собственное/явное/direct свойство объекта String, например, String.fromCharCode или String.prototype... не нужно, когда трогаем свойства строки.
ava
Logree | 28.07.2007, 16:37 #
что-то не так...



function getCard() {

for (this.i=1;this.i<11;this.i++) {

this.mast = Math.floor(Math.random()*4)+1;

this.impotant = Math.floor(Math.random()*14)+1;

document.getElementById("c"+this.i).style.background = "url(i/"+this.impotant+"_"+this.mast+".gif)";

}
}


пишет file:///C:/DOCUME~1/Caesar/0016~1/WEB-~1/Poker/INDEX~1.HTM

Error: document.getElementById("c" + this.i) has no properties
Source File: file://....er/script.js
Line: 22


в html каждая карта представленна слоем <div id="c1"></div>
что не так...?
ava
Zeroglif | 28.07.2007, 17:06 #
Logree,

Если этот скрипт запускается не по событию (window.onload и т.д), а просто по ходу прочтения движком html-кода, то обращения к определённым html-элементам (getElementById) не должны быть выше самих этих элементов. То есть скрипт должен жить ниже элемента... Зачем this.i? Не достаточно объявить внутри функции переменную (var i = 1;).
ava
Logree | 28.07.2007, 17:17 #
я подключал это сценарий отдельным файлом через <script> в <head>
поместил ниже поселил его ниже и всё ормально.. но тогда вопрос в дугом... как это сделать через window.onload?
просто хочется что бы все скрипты были в head e//

и на счёт перременных.. тоесть если я не собираюсь использовать её за пределами функции то можно без this ?.. значит в принципе this.impotant = 0; this.mast = 0;(см 1пост) тоже можно объявить в этой функции?

да к стати посоветуёте какую нибудь книжку по javaS для профи...
тоесть чтоб в ней был упор на функции работы не с тем что видит пользователь а с нечасто пользуемыми но эффективными возможностями или внутренней частью.. (примером внутренней части можно считать куки) "если знаете где скачать киньте сцылку "
ava
dXdYdZ | 01.08.2007, 01:25 #
<a href="http://starcat.dp.ua/doc/wdh/contents.htm">Книга по JavaScript</a>
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit