Народ, помогите пожалуйста! Наверняка опытные программисты сталкивались с таким. Если нужно я могу уточнить вопрос...
|
yambbkru,
Создай объект, создай у объекта нужные свойства и методы. А что должен делать скрипт? |
Да этот скрипт - выдуманный. Я его придумала только для того, что бы научится. Я вроде немного разобралась. Если я создаю объект вот так:
function C(a){with (C) {
first = a.b;
second = "Вторая кнопка";
firstBut = function() {$("#doc").append('<input type="button" value="'+first+'" onclick="secondBut()">');}
secondBut = function() {$("#doc").append('<input type="button" value="'+second+'" onclick="ok()">');}
ok = function() {alert("ОК!");}
firstBut();
}};
$().ready(function() {new C({b:"Первая кнопка"});});
то, все работает так же, как и процедурным способом. Буду пока так делать... |
Женщина, все скрипты выдумываются мозгом. Объясни, что он должен делать.
|
Не самый удачный выбран пример. Как я понял нужно что-то типа этого:
function MyWTFObject()
{
this.$obj = $('<div id="my-wtf-object" style="border:1px solid green"></div>').appendTo('body');
this.$firstButton = new Object();
this.$secondButton = new Object();
this.createFirstButton();
}
MyWTFObject.prototype.createFirstButton = function()
{
var obj = this;
this.firstButton = $('<input type="button" value="first-button"/>')
.appendTo(this.$obj)
.click(function(){obj.createSecondButton()});
}
MyWTFObject.prototype.createSecondButton = function()
{
var obj = this;
this.firstButton = $('<input type="button" value="second-button"/>')
.appendTo(this.$obj)
.click(function(){obj.showOk()});
}
MyWTFObject.prototype.showOk = function()
{
alert('ok');
}
/*----------------------------------------------*/
$(function()
{
window.wtfObject = new MyWTFObject();
});
В примере используется ООП совместно с jQuery |
Я не очень поняла ваш пример! Вы можете дописать комментарии? Зачем использовать прототип? Почему просто нельзя добавить свойства и методы объекту?
|
Для того, кто спрашивал что делает скрипт: мой выдуманный скрипт должен при запуске показывать кнопку, при нажатии на которую появляется еще одна кнопка, при нажатии на которую выскакивает сообщение ОК!
|
вот запускаемый скрипт - пример
<body> </body>
<script>
/* создает кнопку с указанным html и обработчиком клика */
function Button( html, handler ){
var a = document.createElement('button');
a.innerHTML = html;
a.onclick = handler;
return a;
};
// когза страница загрузится, отобразим первую кнопку
window.onload = function(){
// не знаю, зачем, но я их сохраняю
var firstB,secondB;
firstB = new Button("первая", function(){
secondB = new Button("вторая", function(){
alert("OK");
});
// добавляем её туда же,куда и первую
firstB.parentNode.appendChild( secondB );
});
// добавляем первую кнопку в <body>
document.body.appendChild( firstB );
};
</script>
это тот же код, но разноцветный.
/* создает кнопку с указанным html и обработчиком клика */
function Button( html, handler ){
var a = document.createElement('button');
a.innerHTML = html;
a.onclick = handler;
return a;
};
// когза страница загрузится, отобразим первую кнопку
window.onload = function(){
var firstB,secondB;
firstB = new Button("первая", function(){
secondB = new Button("вторая", function(){
alert("OK");
});
// добавляем её туда же,куда и первую
firstB.parentNode.appendChild( secondB );
});
// добавляемпервую кнопку в <body>
document.body.appendChild( firstB );
};
использовать Button можно было и без new, но тут эти три буквы добавляют к читаемости кода |
Спасибо большое! Этот пример мне более понятен. Он больше похож на программирование в Делфи: каждая кнопка - объект и все они часть другого объекта - всего документа.
|
Цитата:
//конструктор объекта-прототипа котрый будет всем рулить
function MyWTFObject()
{
//создаем контейнер в который все будет отрисовываться
this.$obj = $('<div id="my-wtf-object" style="border:1px solid green"></div>').appendTo('body');
//объявим что у объекта есть два свойства - это первая и вторая кнопка соответственно
this.$firstButton = new Object();
this.$secondButton = new Object();
//создадим первую кнопку
this.createFirstButton();
}
//метод создает первую кнопку
MyWTFObject.prototype.createFirstButton = function()
{
var obj = this;//переменная obj теперь ссылается на this который в данном контексте ссылается на сам объект (см замыкания)
//создаем кнопку и сохраняем ссылку на нее в соответствующем свойстве объекта
this.firstButton = $('<input type="button" value="first-button"/>')
.appendTo(this.$obj)//отрисовываем кнопку в контейнер
.click(function(){obj.createSecondButton()});//вешаем событие на клик по кнопке, так как указатель this в этом месте не ссылается на текущий объект то используем для доступа к текущему объекту ранее созданную переменную obj
}
//метод создает вторую кнопку
MyWTFObject.prototype.createSecondButton = function()
{
var obj = this;
this.firstButton = $('<input type="button" value="second-button"/>')
.appendTo(this.$obj)
.click(function(){obj.showOk()});
}
//метод аллертует "ok"
MyWTFObject.prototype.showOk = function()
{
alert('ok');
}
/*----------------------------------------------*/
$(function()
{
//зоздаем экземпляр в глобальной области видимости(т.е. просто делаем его свойством window)
window.wtfObject = new MyWTFObject();
});
Цитата:
|
| Часовой пояс GMT +3, время: 12:39. |