15.03.2008, 19:50
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
проблема с ООП
всем здравствуйте,
я не как не могу решить такую задачу,
обьявляется такой обьект,
Ext.onReady(function(){
......
});
в тем есть различные функции,
мне надо создать такую функцию которая будет,
меня те функции которые обьявлены.
проблема заключается в том что те переменные
которые были обьявлены
например
var top;
|
|
15.03.2008, 21:21
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
scuter, уважаемый, я ннниче не понял! =) Одно вижу - Вы используете фреймворк Ext (больше ничего не понял из Вашего "вопроса")
Сообщение от scuter
|
обьявляется такой обьект,
|
не объявляется объект, он уже объявлен за Вас в самой библиотеке. Здесь вы описываете функцию, которая вызовется при событии onDocumentReady (вызываете "метод" onReady объекта Ext и передаете в качестве параметра свою функцию)
Сообщение от scuter
|
в тем есть различные функции,
мне надо создать такую функцию которая будет,
меня те функции которые обьявлены.
|
вообще ниче не понял! =)
Сообщение от scuter
|
проблема заключается в том что те переменные
которые были обьявлены
например
|
тут тем более! =)
P.S.: ну видите, что написали с опечатками и ошибками - можно же исправить, чтобы люди Вас понимали? Можно же внятно задавать вопросы?
|
|
15.03.2008, 22:26
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Омг, сломал мозг пока читал вопрос.
|
|
16.03.2008, 04:59
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
ОК попробую по помятней.
есть такое скрипт
Ext.onReady(function(){
var TreeNode = function(node)
{
node = tree.getSelectionModel().getSelectedNode();
alert(node.text);
}
var tree = new Ext.tree.TreePanel({
region:'west',
split:true,
tbar: TreeToolbar,
collapsible: true,
width:200,
minWidth: 150,
maxWidth: 350,
border: false,
title: 'меню сайта',
margins: '1 0 0 0',
cmargins: '0 0 0 0',
enableRename: true,
autoScroll:true,
animate:false,
enableDD:true,
rootVisible:false,
containerScroll: true,
loader: new Ext.tree.TreeLoader({
preloadChildren: true,
dataUrl:this.TreeNodeUrl,
clearOnLoad: false
}),
root: new Ext.tree.AsyncTreeNode({
text: 'меню сайта',
draggable:false,
id:'www'
})
});
});
var page = new (function(){
this.TreeNode = function()
{
node = tree.getSelectionModel().getSelectedNode();
alert(node.id);
}
})();
мне надо заменить функцию TreeNode
которая находится в Ext.onReady
на функцию TreeNode которая находится в page
|
|
16.03.2008, 14:58
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от scuter
|
мне надо заменить функцию TreeNode
которая находится в Ext.onReady
на функцию TreeNode которая находится в page
|
замените
|
|
17.03.2008, 06:16
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
большое спасибо.
но к сожалению проблема оказывается не в этом,
вот напимер функция
var TreePanetEdit = function(bottom)
{
var node;
if((bottom == 'Add') || (bottom == 'AddChild'))
{
if(isset(tree))
{
node = tree.getSelectionModel().getSelectedNode();
if(bottom == 'Add')
{
dnode = node;
}
else
{
dnode = node.parentNode;
}
node = TreeNodeAdd(dnode);
if(node.add)
{
node = new Ext.tree.TreeNode(node.add);
dnode.appendChild(node);
}
}
}
else if(bottom == 'TreeNodeUp')
{
}
else if(bottom == 'TreeNodeDown')
{
}
else if(bottom == 'TreeNodeDelete')
{
}
if(isset('node.error'))
{
if(isset('node.error.title') && isset('node.error.text'))
{
Ext.MessageBox.show({
title: node.error.title,
msg: node.error.text,
buttons: Ext.MessageBox.OK,
icon: 'error'
});
}
}
else if(isset(node.msg))
{
if(node.msg.title && node.msg.text)
{
Ext.MessageBox.show({
title: node.msg.title,
msg: node.msg.text,
buttons: Ext.MessageBox.OK,
icon: 'info'
});
}
}
}
пробовал по разному и через функцию isset которая у вас в анологии php и просто if(node.error), но вот хоть ты тресни,а переменной node не существует и всё тут все броузеры боворят плевать нам на if не существует и всё тут.
|
|
17.03.2008, 09:41
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
А с чего вы взяли, что в JavaScript есть функция isset?
|
|
17.03.2008, 12:00
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
scuter, дружище! Небольшой совет: не нужно приводить лишний большой код, который неинтересен для анализа. Попробуй локализовать проблему. Переменная node у тебя локальная и определяется только при условии if((bottom == 'Add') || (bottom == 'AddChild')). Значит надо смотреть, почему button не равен ни одному из этих значений. Попробуй продебажить это, расставив alert'ы во всех вызовах.
scuter, функции isset(...), действительно не существует в JS. Однако, Kolyaj, я полагаю, что автор описал ее сам (что-то вроде: var isset = function(obj) { return typeof obj !== 'undefined' };).
Последний раз редактировалось Dmitry A. Soshnikov, 17.03.2008 в 12:39.
|
|
17.03.2008, 16:38
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
Цитата:
|
А с чего вы взяли, что в JavaScript есть функция isset?
|
Javascript для PHP функции: isset
извените я просто не могу найти проблему
создаю функцию,
а она запускается в момент её инициализации, то есть
пишу так
var TreePanetEdit = function(box)
{
if(box)
{
alert(box);
}
else
{
alert('nexus');
}
}
и функция запускается когда объявляется,
а когда используешь эту функцию она ничего не хочет делать,
например если сделать так,
TreePanetEdit('it is work');
может я её как то не так объявил?
Последний раз редактировалось scuter, 17.03.2008 в 20:37.
|
|
17.03.2008, 16:46
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
В последнем примере всё объявлено правильно. Может ты опять объявил её с инкапсуляцией и "вызовом при объявлении", как в первом примере? Т.е вот так:
var TreePanetEdit = new (function(box)
{
if(box)
{
alert(box);
}
else
{
alert('nexus');
}
})();
if(isset('node.error'))
{
if(isset('node.error.title') && isset('node.error.text'))
И в этом месте, как я понимаю, не нужно ставить кавычки, так как проверяется по самому элементу, а не по его имени.
Последний раз редактировалось Андрей Параничев, 17.03.2008 в 17:02.
|
|
|
|