Имеется данный код:
photo = (function(){
var pid, cid, uid, url, act;
function setData(){
pid = ge('photoid').value;
cid = ge('catid').value;
uid = ge('userid').value;
url = 'ajax/photo.php';
}
var onDone = function(xml, text){
var tag = new Array('pid','name','pic','list','width','height');
var value = new Array();
for(var i=0; i<tag.length; i++){
value[tag[i]] = xml.getElementsByTagName(tag[i])[0].firstChild.nodeValue;
}
location.hash = 'id=' + value['pid'];
ge('photoid').value = value['pid'];
ge('commentmid').value = value['pid'];
ge('picname').innerText = value['name'];
ge('photolink').innerHTML = toHtml(value['pic']);
var list = toHtml(value['list']);
if(list != '0'){
ge('frends').innerHTML = list;
}else{
ge('frends').innerHTML = "";
}
var width = (800 - value['width']) / 2;
var left = parseInt(value['width'] / 2) - 50 + width;
var top = parseInt(value['height'] / 2) - 50;
ge('photoloader').style.display = "block";
ge('photoloader').style.left = left+"px";
ge('photoloader').style.top = top+"px";
comment.nextPage('0');
}
var onFail = function(){
alert('fail');
}
var pajax = new Ajax(onDone, onFail);
return{
next: function(){
act = 'next';
setData();
pajax.post(url, {'id':pid,'uid':uid,'cat':cid,'act':'next'});
},
prew: function(){
act = 'prew';
setData();
pajax.post(url, {'id':pid,'uid':uid,'cat':cid,'act':'prew'});
},
load: function(){
ge('photoloader').style.display = "none";
}
}
}())
Но при вызове photo.next(); or photo.prew();
FF пишет photo.next(); is not a function
Думал ошибка в коде упросит до:
photo = (function(){
return{
next: function(){
alert('next');
}
}
}())
И все ровно выдает photo.next(); is not a function
Не понимаю, в чем проблема... может кто сталкивался или знает объяснение такого глюка, кстате в Opere выдает следующие:
Event thread: click
Error:
name: TypeError
message: Statement on line 1: Type mismatch (usually non-object value supplied where object required)
Backtrace:
Line 1 of function script
javascript
hoto.next();
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
Незнаю важно тут или нет, но данный код вызывается следующим способом:
<table id='photonavigation'>
<tr>
<td class='nav'><a href='#' onClick='javascript:photo.prew(); return false;'>←</a></td>
<td class='nav'><a href='#' onClick='javascript:photo.next(); return false;'>→</a></td>
</tr>
</table>
В Google Chrome и IE работает отлично!