Note that there are some explanatory texts on larger screens.

plurals
  1. POJquery returning undefined
    primarykey
    data
    text
    <p>am using tabswitch from <a href="http://www.hieu.co.uk/blog/index.php/tabswitch/" rel="nofollow">http://www.hieu.co.uk/blog/index.php/tabswitch/</a></p> <p>am trying to add extra functionality to return the total number of tabs am trying to return a value within the function the alert statement in getLength outputs the correct value but the value returned is undefined</p> <p>here is my code:</p> <pre><code>//the function within tabswitch function: var getLength = function(){ var $totalPages = parseInt((Obj.length)); alert('getLength function totalPages = '+$totalPages); $('.pagetotal').html(' '+$totalPages); //this correctly sets the element to the correct value return ($totalPages); // this returns undefined? } function setTabIndex(){ $totalPages = $('.SlideTab').tabSwitch('getlength'); //undefined? $mypage = parseInt($(".SlideTab").tabSwitch('index')+1); $currentIndex = parseInt($(".SlideTab").tabSwitch('index')); $('.pageon').html('Page '+$mypage+' of'); alert('totalPages = '+$totalPages+' myPage = '+$mypage+' currentindex = '+$currentIndex); //returns undefined for total pages?? setButtons(); }; </code></pre> <p>the full tabswitch code:</p> <pre><code>/* * .tabSwitch * Version: 1.0 * http://www.hieu.co.uk/blog/index.php/tabswitch/ * * Copyright (c) 2009 Hieu Pham - http://www.hieu.co.uk * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) * http://www.opensource.org/licenses/cddl1.php * * Date: 14/04/2009 */ (function($){ $.fn.tabSwitch = function(command, Arguements, EndFunction) { //Default value should be set here var defaults = { type : "toggle", //Type of effect cols : 2, //This only used when you're using type = table toggle : "fade", //This specific which type of toggle effect ease : 40, easeType: "linear", //This isn't work for this version yet loopback: 0, //If it's 1 it will loop when it reach the ends width : 400, // Size of the viewport height : 400, index : 0, //The current tab index speed : 500, //Speed of the animation interval: 5000, //The interval of auto-animate step : 1, //How many step you want to use in moveStep wrapperClass : "", //You could add extra class for the wraper viewportClass : "" //You could add extra class for the viewport }; var Args = $.extend(defaults, Arguements); var Obj = this; var $totalPages = (Obj.length); //For quicker access var jFirstObj = Obj.eq(1); var DOMFirstObj = Obj.eq(1).get(0); if(!$.isFunction(EndFunction)){ //Set the index in the cache var Callback = function(){ $.data(DOMFirstObj, "index", Args.index); }; } else{ var Callback = function(){ $.data(DOMFirstObj, "index", Args.index); EndFunction(); }; } //Back up orginal information StoreToCache = function(){ //Now store the tab type in the cache for further use $.data(DOMFirstObj, "type", Args.type); $.data(DOMFirstObj, "toggle", Args.toggle); $.data(DOMFirstObj, "cols", Args.cols); $.data(DOMFirstObj, "ease", Args.ease); $.data(DOMFirstObj, "easeType", Args.easeType); $.data(DOMFirstObj, "index", Args.index); $.data(DOMFirstObj, "loopback", Args.loopback); //Before do anything to the object, keep a backup so we could revert it if(jFirstObj.attr('style')){ $.data(DOMFirstObj, "orgAttr", jFirstObj.attr('style')); }else{ $.data(DOMFirstObj, "orgAttr", ""); } } //Remove all the data in cache and reset the object back to original backFromCache = function(){ Obj.attr('style',$.data(DOMFirstObj, "orgAttr")); var ViewPortObj = $("#ViewPort"+$.data(DOMFirstObj)); ViewPortObj.replaceWith(Obj); //Remove auto if it's running stopAuto(); //Clear cacke $.removeData(DOMFirstObj); } //Execute when input comment is create var createTab = function(){ //Back up orginal information StoreToCache(); //Construct the form //Set all the CSS for the list div, this;s the common setting for all type of tab if(Args.width) Obj.width(Args.width); if(Args.height) Obj.height(Args.height); //A big wraper around and change some CSS of the wrap var WraperSelector = "WideDiv" + $.data(DOMFirstObj); Obj.wrapAll("&lt;div id='"+WraperSelector +"'&gt;&lt;/div&gt;"); var WraperObj = $("#"+WraperSelector); WraperObj.addClass(Args.wraperClass); WraperObj.css({"position":"relative"}); WraperObj.wrap("&lt;div id='" +WraperSelector.replace("WideDiv","ViewPort") + "'&gt;&lt;/div&gt;") //Now create the viewport with the input size var ViewPortObj = $("#" + WraperSelector.replace("WideDiv","ViewPort")); ViewPortObj.width(Args.width); ViewPortObj.height(Args.height); ViewPortObj.css({"display":"block","overflow":"hidden","position":"relative"}); ViewPortObj.addClass(Args.viewportClass); switch(Args.type) { case "slide": Obj.css({"float":"left"}); //A big wraper around and change some CSS of the wrap WraperObj.width((Args.width+2) * Obj.length); //Now create the viewport with the input size break; case "scroll": //A big wraper around and change some CSS of the wrap WraperObj.width(Args.width); WraperObj.height((Args.height+2) * Obj.length); break; case "toggle": WraperObj.width(Args.width); WraperObj.height(Args.height); Obj.css({"position":"absolute", "left": "-999px"}); Obj.eq(Args.index).css({"left":"0px", "top":"0px"}); Obj.eq(Args.index).css("opacity", 1); break; case "table": WraperObj.width(Args.width*Args.cols); Obj.css("float", "left"); } moveTo(); } var getLength = function(){ //$totalPages = parseInt((Obj.length)); alert('getLength function totalPages = '+$totalPages); $('.pagetotal').html(' '+$totalPages); return ($totalPages); } // Move object to a position set by Args.Index var moveTo = function(){ //get the easeLevel from the cache var ease = 0; //Check if the next idx is out of the limit or not if(!Args.easeType){ Args.easeType = (DOMFirstObj, "easeType"); } if(Args.index &gt; Obj.length -1 ){ if($.data(DOMFirstObj, "loopback")!=0){ Args.index = 0; ease = -$.data(DOMFirstObj, "ease"); } else return; } if(Args.index &lt; 0 ){ if($.data(DOMFirstObj, "loopback")!=0){ Args.index = Obj.length-1; ease = $.data(DOMFirstObj, "ease"); } else return; } var WraperSelector = "WideDiv" + $.data(DOMFirstObj); var WraperObj = $("#"+WraperSelector); //See what type of effect we stimulate switch($.data(DOMFirstObj, "type")){ case 'slide': //Get how much ease we set and start the animation if(ease!=0){ var easeLevel = (parseInt(WraperObj.css("left").replace("px",""))+ease); WraperObj.animate({left: easeLevel+"px"}, Args.speed, function(){ WraperObj.animate({left:-(Obj.outerWidth(true) * Args.index)+"px"}, Args.speed, Args.easeType, Callback()); }); }else{ WraperObj.animate({left:-(Obj.outerWidth(true) * Args.index)+"px"}, Args.speed, Args.easeType, Callback()); } break; case 'scroll': //Get how much ease we set and start the animation if(ease!=0){ var easeLevel = (parseInt(WraperObj.css("top").replace("px",""))+ease); WraperObj.animate({top: easeLevel+"px"}, Args.speed, function(){ WraperObj.animate({top:-(Obj.outerHeight(true) * Args.index)+"px"}, Args.speed, Args.easeType, Callback()); }); }else{ WraperObj.animate({top:-(Obj.outerHeight(true) * Args.index)+"px"}, Args.speed, Args.easeType, Callback()); } break; case 'toggle': //move the new one on top of the old div Obj.eq(Args.index).css({"left":"0px", "top":"0px"}); switch($.data(DOMFirstObj, "toggle")) { case "fade": Obj.eq(Args.index).css({"opacity":0}); Obj.eq(Args.index).animate({"opacity":1},Args.speed); if($.data(DOMFirstObj, "index")!=Args.index){ Obj.eq($.data(DOMFirstObj, "index")).animate({"opacity":0},Args.speed, function(){ $(this).css("left",-999); Callback(); }); } break; case "toggle": if($.data(DOMFirstObj, "index")!=Args.index){ Obj.eq(Args.index).css({"display":"none"}); Obj.eq($.data(DOMFirstObj, "index")).slideUp(Args.speed, function(){ Obj.eq(Args.index).slideDown(Args.speed, function(){Callback();}); $(this).css("left",-999); }); } break; case "show": if($.data(DOMFirstObj, "index")!=Args.index){ Obj.eq(Args.index).css({"display":"none"}); Obj.eq($.data(DOMFirstObj, "index")).hide(Args.speed, function(){ Obj.eq(Args.index).show(Args.speed,function(){Callback();}); $(this).css("left",-999); }); } break; case "noeffect": if($.data(DOMFirstObj, "index")!=Args.index){ Obj.eq($.data(DOMFirstObj, "index")).css("left", -999); Callback(); } break; } break; case "table": var cols = $.data(DOMFirstObj, "cols"); //Where the next idx in the table var nextX = -(Args.index % cols) * Obj.width(); var nextY = -Math.floor(Args.index / cols) * Obj.height(); //Move horizontal first WraperObj.animate({"left": nextX}, Args.speed, Args.easeType, function(){ WraperObj.animate({"top": nextY}, Args.speed, Args.easeType, Callback()); }); break; default: $('html,body').animate({"scrollTop":Obj.eq(Args.index).offset().top},Args.speed); break; } }; //Move by steps moveStep = function(){ var currentIdx = $.data(DOMFirstObj, "index"); //Calculate the next index Args.index = parseInt(currentIdx) + parseInt(Args.step); //Then move to it moveTo(); } //Set it run auto startAuto = function(){ //Save the autoswitch into memory and start it $.data(DOMFirstObj, "AutoSwitch", setInterval(moveStep, Args.interval)); } //Stop the auto stopAuto = function(){ //Stop the interval and clear the cache clearInterval($.data(DOMFirstObj, "AutoSwitch")); $.removeData(DOMFirstObj, "AutoSwitch"); } //Toggle auto toggleAuto = function(){ if(isAuto()){ stopAuto(); }else{ startAuto(); } } //Return if this is auto or not isAuto = function(){ if($.data(DOMFirstObj, "AutoSwitch")){ return true; }else{ return false; } } if(!command) command = ""; //Check what user want switch(command.toLowerCase()){ case "index": if($.data(DOMFirstObj, "index")){ return $.data(DOMFirstObj, "index"); }else{ return 0; } break; case "moveto": moveTo(); break; case "movestep": moveStep(); break; case "destroy": backFromCache(); break; case "create": createTab(); break; case "isauto": return isAuto(); break; case "toggleauto": toggleAuto(); break; case "startauto": startAuto(); break; case "stopauto": stopAuto(); break; case "getlength": getLength(); break; case "pagecount": pageCount(); break; } }; })(jQuery); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload