Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > "ООП" в javascript


Автор: Logree 26.7.2007, 22: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

почему...?

Автор: Zeroglif 26.7.2007, 23:27
Цитата(Logree @  26.7.2007,  22:45 Найти цитируемый пост)
почему...?

Код

Math.random();

Автор: Logree 27.7.2007, 00:00
я думал это не обязательно... а в каких случаях нужно указывать String. ?

Автор: Zeroglif 27.7.2007, 00:31
Цитата(Logree @  27.7.2007,  00:00 Найти цитируемый пост)
я думал это не обязательно... а в каких случаях нужно указывать String

Нужно, когда трогаем собственное/явное/direct свойство объекта String, например, String.fromCharCode или String.prototype... не нужно, когда трогаем свойства строки.

Автор: Logree 28.7.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>
что не так...?

Автор: Zeroglif 28.7.2007, 17:06
Logree, 

Если этот скрипт запускается не по событию (window.onload и т.д), а просто по ходу прочтения движком html-кода, то обращения к определённым html-элементам (getElementById) не должны быть выше самих этих элементов. То есть скрипт должен жить ниже элемента... Зачем this.i? Не достаточно объявить внутри функции переменную (var i = 1;).

Автор: Logree 28.7.2007, 17:17
я подключал это сценарий отдельным файлом через <script> в <head> 
поместил ниже поселил его ниже и всё ормально.. но тогда вопрос в дугом... как это сделать через window.onload?
просто хочется что бы все скрипты были в head e//

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

да к стати посоветуёте какую нибудь книжку по javaS для профи...
тоесть чтоб в ней был упор на функции работы не с тем что видит пользователь а с нечасто пользуемыми но эффективными возможностями или внутренней частью.. (примером внутренней части можно считать куки) "если знаете где скачать киньте сцылку "

Автор: dXdYdZ 1.8.2007, 01:25
<a href="http://starcat.dp.ua/doc/wdh/contents.htm">Книга по JavaScript</a>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)