Question

This is a script that is generated by CodeCharge (code generator) as part of my app (well, also by Artisteer designs, apparently). I have very little knowledge of web development, zero knowledge of JS and I have to use this code generator. The script keeps coming up with this error: "Line: 139, Char: 13, Error: Unable to get property 'parent' of undefined or null reference, Code:0, URL: ). Like I was saying, I have no control upon generation of this script, but I can go and modify it, to hopefully fix this. Below is the full script. Line 139 is:

    var s = c.parent().children('.art-layout-cell:not(.art-content)');

This is full script:

/* begin Page */
/* Created by Artisteer v3.1.0.55575 */
// css helper
(function($) {
    var data = [
        {str:navigator.userAgent,sub:'Chrome',ver:'Chrome',name:'chrome'},
        {str:navigator.vendor,sub:'Apple',ver:'Version',name:'safari'},
        {prop:window.opera,ver:'Opera',name:'opera'},
        {str:navigator.userAgent,sub:'Firefox',ver:'Firefox',name:'firefox'},
        {str:navigator.userAgent,sub:'MSIE',ver:'MSIE',name:'ie'}];
    for (var n=0;n<data.length;n++) {
        if ((data[n].str && (data[n].str.indexOf(data[n].sub) != -1)) || data[n].prop) {
            var v = function(s){var i=s.indexOf(data[n].ver);return (i!=-1)? parseInt(s.substring(i+data[n].ver.length+1)):'';};
            $('html').addClass(data[n].name+' '+data[n].name+v(navigator.userAgent) || v(navigator.appVersion)); break;         
    }
}
})(jQuery);
/* end Page */

/* begin Menu */
jQuery(function () {
    if (!jQuery.browser.msie || parseInt(jQuery.browser.version) > 7) return;
    jQuery('ul.art-hmenu>li:not(:first-child)').each(function () { jQuery(this).prepend('<span class="art-hmenu-separator"> </span>'); });
    if (!jQuery.browser.msie || parseInt(jQuery.browser.version) > 6) return;
    jQuery('ul.art-hmenu li').each(function () {
        this.j = jQuery(this);
        this.UL = this.j.children('ul:first');
        if (this.UL.length == 0) return;
        this.A = this.j.children('a:first');
        this.onmouseenter = function () {
            this.j.addClass('art-hmenuhover');
            this.UL.addClass('art-hmenuhoverUL');
            this.A.addClass('art-hmenuhoverA');
        };
        this.onmouseleave = function() {
            this.j.removeClass('art-hmenuhover');
            this.UL.removeClass('art-hmenuhoverUL');
            this.A.removeClass('art-hmenuhoverA');
        };
    });
});

jQuery(function() { setHMenuOpenDirection({container: "div.art-sheet-body",         defaultContainer: "#art-main", menuClass: "art-hmenu", leftToRightClass: "art-hmenu-left-to-right", rightToLeftClass: "art-hmenu-right-to-left"}); });

function setHMenuOpenDirection(menuInfo) {
    var defaultContainer = jQuery(menuInfo.defaultContainer);
    defaultContainer = defaultContainer.length > 0 ? defaultContainer = jQuery(defaultContainer[0]) : null;

jQuery("ul." + menuInfo.menuClass + ">li>ul").each(function () {
    var submenu = jQuery(this);
    var submenuWidth = submenu.outerWidth();
    var submenuLeft = submenu.offset().left;

    var mainContainer = submenu.parents(menuInfo.container);
    mainContainer = mainContainer.length > 0 ? mainContainer = jQuery(mainContainer[0]) : null;

    var container = mainContainer || defaultContainer;
    if (container != null) {
        var containerLeft = container.offset().left;
        var containerWidth = container.outerWidth();

        if (submenuLeft + submenuWidth >=
                containerLeft + containerWidth) 
            /* right to left */
            submenu.addClass(menuInfo.rightToLeftClass).find("ul").addClass    (menuInfo.rightToLeftClass);
        if (submenuLeft <= containerLeft)
            /* left to right */
            submenu.addClass(menuInfo.leftToRightClass).find("ul").addClass    (menuInfo.leftToRightClass);
        }
    });
}

jQuery(function ($) {
    $("ul.art-hmenu a:not([href])").attr('href', '#').click(function (e) { e.preventDefault(); });
});
/* end Menu */

/* begin MenuSubItem */
jQuery(function () {
    jQuery("ul.art-hmenu ul li").hover(function () { jQuery(this).prev().children("a").addClass("art-hmenu-before-hovered"); }, 
    function () { jQuery(this).prev().children("a").removeClass("art-hmenu-before-hovered"); });
});

jQuery(function () {
    if (!jQuery.browser.msie) return;
    var ieVersion = parseInt(jQuery.browser.version);
    if (ieVersion > 7) return;

/* Fix width of submenu items.
* The width of submenu item calculated incorrectly in IE6-7. IE6 has wider items, IE7 display items like stairs.
*/
jQuery.each(jQuery("ul.art-hmenu ul"), function () {
    var maxSubitemWidth = 0;
    var submenu = jQuery(this);
    var subitem = null;
    jQuery.each(submenu.children("li").children("a"), function () {
        subitem = jQuery(this);
        var subitemWidth = subitem.outerWidth();
        if (maxSubitemWidth < subitemWidth)
            maxSubitemWidth = subitemWidth;
    });
    if (subitem != null) {
        var subitemBorderLeft = parseInt(subitem.css("border-left-width"), 10) || 0;
        var subitemBorderRight = parseInt(subitem.css("border-right-width"), 10) || 0;
        var subitemPaddingLeft = parseInt(subitem.css("padding-left"), 10) || 0;
        var subitemPaddingRight = parseInt(subitem.css("padding-right"), 10) || 0;
        maxSubitemWidth -= subitemBorderLeft + subitemBorderRight + subitemPaddingLeft + subitemPaddingRight;
        submenu.children("li").children("a").css("width", maxSubitemWidth + "px");
    }
});

if (ieVersion > 6) return;
jQuery("ul.art-hmenu ul>li:first-child>a").css("border-top-width", "1px");
});
/* end MenuSubItem */

/* begin Layout */
jQuery(function () {
jQuery(window).bind('resize', function () {
    var bh = jQuery('body').height();
    var mh = 0;

    jQuery('#art-main').children().each(function() {
        if (jQuery(this).css('position') != 'absolute')
            mh += jQuery(this).outerHeight(true);
    });

    if (mh < bh)
    {
        var r = bh - mh;
        var c = jQuery('div.art-content');
        c.css('height', (c.outerHeight(true) + r) + 'px');
    }
});

if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 8) {
    jQuery(window).bind('resize', function() {
        var c = $('div.art-content');
        var s = c.parent().children('.art-layout-cell:not(.art-content)');
        var w = 0;
        c.hide();
        s.each(function() { w += this.clientWidth; });
        c.w = c.parent().width(); c.css('width', c.w - w + 'px');
        c.show();
    });
}

jQuery(window).trigger('resize');
});
/* end Layout */

/* begin Button */
function artButtonSetup(className) {
    jQuery.each(jQuery("a." + className + ", button." + className + ", input." + className), function (i, val) {
    var b = jQuery(val);
    if (!b.parent().hasClass('art-button-wrapper')) {
        if (b.is('input')) b.val(b.val().replace(/^\s*/, '')).css('zoom', '1');
        if (!b.hasClass('art-button')) b.addClass('art-button');
        jQuery("<span class='art-button-wrapper'><span class='art-button-l'> </span><span class='art-button-r'> </span></span>").insertBefore(b).append(b);
        if (b.hasClass('active')) b.parent().addClass('active');
    }
    b.mouseover(function () { jQuery(this).parent().addClass("hover"); });
    b.mouseout(function () { var b = jQuery(this); b.parent().removeClass("hover"); if (!b.hasClass('active')) b.parent().removeClass('active'); });
    b.mousedown(function () { var b = jQuery(this); b.parent().removeClass("hover"); if (!b.hasClass('active')) b.parent().addClass('active'); });
    b.mouseup(function () { var b = jQuery(this); if (!b.hasClass('active')) b.parent().removeClass('active'); });
});
}
jQuery(function() { artButtonSetup("art-button"); });

/* end Button */



// adds spans to apply css styles for buttons with class "Button"
jQuery(function() { artButtonSetup("Button"); });

jQuery(function() {
// events for CCS AjaxPanel can be set with help of AjaxPanelEvents
if (typeof window.AjaxPanelEvents == "undefined") window.AjaxPanelEvents = [];
// when CCS AjaxPanel is updated the buttons should be decorated with spans again
window.AjaxPanelEvents.push({
    eventName: "afterUpdate",
    func: function(updatePanel) {
        // adds spans to apply css styles for buttons with class "Button"
        artButtonSetup("Button", updatePanel);
        // adds spans to apply css styles for buttons with class "art-button"
        artButtonSetup("art-button", updatePanel);
        }
    });
});

Can anybody help? Thanks!

No correct solution

OTHER TIPS

It seems that c is not instantiated, something like c = new anything.

It looks like you might have used jQuery.noConflit() in your project, so $ is not jQuery object.

So change

var c = $('div.art-content');

to

var c = jQuery('div.art-content');
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top