проблема с ООП
всем здравствуйте,
я не как не могу решить такую задачу, обьявляется такой обьект, Ext.onReady(function(){ ...... }); в тем есть различные функции, мне надо создать такую функцию которая будет, меня те функции которые обьявлены. проблема заключается в том что те переменные которые были обьявлены например var top; |
scuter, уважаемый, я ннниче не понял! =) Одно вижу - Вы используете фреймворк Ext (больше ничего не понял из Вашего "вопроса")
Цитата:
Цитата:
Цитата:
P.S.: ну видите, что написали с опечатками и ошибками - можно же исправить, чтобы люди Вас понимали? Можно же внятно задавать вопросы? |
Омг, сломал мозг пока читал вопрос.
|
ОК попробую по помятней.
есть такое скрипт 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 |
Цитата:
|
большое спасибо.
но к сожалению проблема оказывается не в этом, вот напимер функция 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 не существует и всё тут. |
А с чего вы взяли, что в JavaScript есть функция isset?
|
scuter, дружище! Небольшой совет: не нужно приводить лишний большой код, который неинтересен для анализа. Попробуй локализовать проблему. Переменная node у тебя локальная и определяется только при условии if((bottom == 'Add') || (bottom == 'AddChild')). Значит надо смотреть, почему button не равен ни одному из этих значений. Попробуй продебажить это, расставив alert'ы во всех вызовах.
scuter, функции isset(...), действительно не существует в JS. Однако, Kolyaj, я полагаю, что автор описал ее сам (что-то вроде: var isset = function(obj) { return typeof obj !== 'undefined' };). |
Цитата:
извените я просто не могу найти проблему создаю функцию, а она запускается в момент её инициализации, то есть пишу так var TreePanetEdit = function(box) { if(box) { alert(box); } else { alert('nexus'); } } и функция запускается когда объявляется, а когда используешь эту функцию она ничего не хочет делать, например если сделать так, TreePanetEdit('it is work'); может я её как то не так объявил? |
В последнем примере всё объявлено правильно. Может ты опять объявил её с инкапсуляцией и "вызовом при объявлении", как в первом примере? Т.е вот так:
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')) И в этом месте, как я понимаю, не нужно ставить кавычки, так как проверяется по самому элементу, а не по его имени. |
Часовой пояс GMT +3, время: 12:35. |