0

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!

1
  • That's not JScript and no classic ASP. It's called JavaScript and jQuery. Commented Apr 2, 2013 at 7:16

2 Answers 2

0

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

Sign up to request clarification or add additional context in comments.

3 Comments

Like I was saying, I have no idea of JS, but I don't see a 'new' statement in the whole script, so nothing is instantiated? Or, can it be anywhere else? Or, is this how it's instantiated (doesn't JS instantiate like this (the line before the error): var c = $('div.art-content');?
It is probably that you dont have a class in your markup with the same name as div.art-content.
and yes, var c = ${'div.art-content'} is the way jQuery instantiate a HTML element by its class name.
0

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');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.