Javascript phänomenischer Fehler wegen html Tag

so jetzt ists noch schlimmer geworden, es geht nicht mehr im Forefox und im Internet Explorer gehts auch nicht.
Ich sag mal, wo nichts ist, kann auch nichts gehen :-)

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<link rel="stylesheet" href="library/svigm.css" type="text/css"/>
<script type="text/javascript" src="src/skin/classic/skin.js"></script>
<script type="text/javascript" src="src/adapter/shadowbox-base.js"></script>
<script type="text/javascript" src="src/shadowbox.js"></script>
<script type="text/javascript">
Shadowbox.loadSkin('classic', 'src/skin'); 
Shadowbox.loadLanguage('en', 'src/lang'); 
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], 'src/player');
window.onload = function()
{Shadowbox.init();};
</script>
<title>Unbenanntes Dokument</title>
</head>
<body>

<div id='divIGM'>
<table width="600" border="0">
  <tr>
    <td>
    
<table id="tblThumbsLayout" cellpadding="10" cellspacing="5">
  <tr>
   
         <!-- Hier fehlt plötzlich was! -->  
     
  					</tr>
			</table>


		</td>
  	</tr>
</table>
</div>

</body>
</html>


... und daraus resultiert nun auch die einzige Fehlermeldung des Validators.

mfg Maik
 
Hallo,


falls du mit fehlen ein <td></td> meinst dann ist meine antwort:


Code:
<div id='divIGM'>
<table width="600" border="0">
  <tr>
    <td>
    
<table id="tblThumbsLayout" cellpadding="10" cellspacing="5">
  <tr>
   
  <?    $i = 0; ?>
    <?php 	if ($RECrows > 0 ) foreach($DATA['SEARCH'] as $searchEntry): 	?>   
 	<?  $bild_thumbs = htmlentities($searchEntry['path_thumb']);
	
	$i++; 
	?>

<td class='tdImg'>
<a rel="shadowbox[igm]; options={counterType:'skip',continuous:true,animSequence:'sync'}" class="option" title="<? echo "$bild_thumbs"; ?>" href='photos/<? echo "$bild_thumbs"; ?>'>
<img class='eImage' src="thumbs/<? echo "$bild_thumbs"; ?>" alt="<? echo "$bild_thumbs"; ?>" title="<? echo "$bild_thumbs"; ?>"/></a>
<p align=center><font class='tdTitle'><font color="#000000"><? echo "$bild_thumbs"; ?></font></font></p>
</td>

    <? if( $i % 3 == 0 ) echo "<tr></tr>";	?>
    
    
     <?php endforeach; ?>
     
     
  					</tr>
			</table>



		</td>
  	</tr>
</table>
</div>


also wenn die anzahl > 0 ist, dann wird auch das <td> </td> eingefügt.
Und ein datensatz liegt ja vor.

Anscheinend liegts doch an was anderes weshalb nicht geht oder?
 
vielleicht ein bissien zu ordentlichen für den Forefox. Keine ahnung ...
Was würdets du machen?... ich sitz schon mind. 30 stunden dran wenn nicht länger...
 
Was würdets du machen?... ich sitz schon mind. 30 stunden dran wenn nicht länger...
Mindestens eine Stunde Pause einlegen, mich mit was ganz anderem beschäftigen, um den Kopf frei zu bekommen, und dann nochmal von Grund auf neu beginnen.

Ansonsten, debuggen, debuggen, und nochmals debuggen...

mfg Maik
 
Hallo Maik,


Ich hab was wichtiges herausgefunden...
Es wird im Firefox und im IE wieder angezeigt, ich hatte bei dem Stress bei der Selectabfrage was doofes gemacht.

Aufjedenfall, beim Firefox gehts ja und beim IE nicht. Als ich eben die Seite wieder mit dem IE geöffnet habe stand da unten Links -> Fehler auf der Seite...

http://www.fotos-hochladen.net/fehler84m3hwrs.jpg


Der Fehler soll auf dieser Js Datei sein...



Code:
/**
 * A base library for Shadowbox used as a standalone (without another base
 * library/adapter combination).
 *
 * This file is part of Shadowbox.
 *
 * Shadowbox is an online media viewer application that supports all of the
 * web's most popular media publishing formats. Shadowbox is written entirely
 * in JavaScript and CSS and is highly customizable. Using Shadowbox, website
 * authors can showcase a wide assortment of media in all major browsers without
 * navigating users away from the linking page.
 *
 * Shadowbox is released under version 3.0 of the Creative Commons Attribution-
 * Noncommercial-Share Alike license. This means that it is absolutely free
 * for personal, noncommercial use provided that you 1) make attribution to the
 * author and 2) release any derivative work under the same or a similar
 * license.
 *
 * If you wish to use Shadowbox for commercial purposes, licensing information
 * can be found at http://mjijackson.com/shadowbox/.
 *
 * @author      Michael J. I. Jackson <mjijackson@gmail.com>
 * @copyright   2007-2008 Michael J. I. Jackson
 * @license     http://creativecommons.org/licenses/by-nc-sa/3.0/
 * @version     SVN: $Id: shadowbox-base.js 103 2008-06-27 06:19:21Z mjijackson $
 */

// create the Shadowbox object first
var Shadowbox = {};

Shadowbox.lib = function(){

    // local style camelizing for speed
    var styleCache = {};
    var camelRe = /(-[a-z])/gi;
    var camelFn = function(m, a){
        return a.charAt(1).toUpperCase();
    };
    var toCamel = function(style){
        var camel;
        if(!(camel = styleCache[style])){
            camel = styleCache[style] = style.replace(camelRe, camelFn);
        }
        return camel;
    };

    var view = document.defaultView;
    var alphaRe = /alpha\([^\)]*\)/gi;

    /**
     * Sets the opacity of the given element to the specified level.
     *
     * @param   {HTMLElement}   el          The element
     * @param   {Number}        opacity     The opacity to use
     * @return  void
     * @private
     * @static
     */
    var setOpacity = function(el, opacity){
        var s = el.style;
        if(window.ActiveXObject){ // IE
            s.zoom = 1; // give "layout"
            s.filter = (s.filter || '').replace(alphaRe, '') +
                (opacity == 1 ? '' : ' alpha(opacity=' + (opacity * 100) + ')');
        }else{
            s.opacity = opacity;
        }
    };

    return {

        adapter: 'standalone',

        /**
         * Gets the value of the style on the given element. This function
         * adapted from Ext.Element.getStyle().
         *
         * @param   {HTMLElement}   el      The DOM element
         * @param   {String}        style   The name of the style (e.g. margin-top)
         * @return  {mixed}                 The value of the given style
         * @public
         * @static
         */
        getStyle: function(){
            return view && view.getComputedStyle
                ? function(el, style){
                    var v, cs, camel;
                    if(style == 'float') style = 'cssFloat';
                    if(v = el.style[style]) return v;
                    if(cs = view.getComputedStyle(el, '')){
                        return cs[toCamel(style)];
                    }
                    return null;
                }
                : function(el, style){
                    var v, cs, camel;
                    if(style == 'opacity'){
                        if(typeof el.style.filter == 'string'){
                            var m = el.style.filter.match(/alpha\(opacity=(.+)\)/i);
                            if(m){
                                var fv = parseFloat(m[1]);
                                if(!isNaN(fv)) return (fv ? fv / 100 : 0);
                            }
                        }
                        return 1;
                    }else if(style == 'float'){
                        style = 'styleFloat';
                    }
                    var camel = toCamel(style);
                    if(v = el.style[camel]) return v;
                    if(cs = el.currentStyle) return cs[camel];
                    return null;
                };
        }(),

        /**
         * Sets the style on the given element to the given value. May be an
         * object to specify multiple values. This function adapted from
         * Ext.Element.setStyle().
         *
         * @param   {HTMLElement}   el      The DOM element
         * @param   {String/Object} style   The name of the style to set if a
         *                                  string, or an object of name =>
         *                                  value pairs
         * @param   {String}        value   The value to set the given style to
         * @return  void
         * @public
         * @static
         */
        setStyle: function(el, style, value){
            if(typeof style == 'string'){
                var camel = toCamel(style);
                if(camel == 'opacity'){
                    setOpacity(el, value);
                }else{
                    el.style[camel] = value;
                }
            }else{
                for(var s in style){
                    this.setStyle(el, s, style[s]);
                }
            }
        },

        /**
         * Gets a reference to the given element.
         *
         * @param   {String/HTMLElement}    el      The element to fetch
         * @return  {HTMLElement}                   A reference to the element
         * @public
         * @static
         */
        get: function(el){
            return typeof el == 'string' ? document.getElementById(el) : el;
        },

        /**
         * Removes an element from the DOM.
         *
         * @param   {HTMLElement}       el      The element to remove
         * @return  void
         * @public
         * @static
         */
        remove: function(el){
            el.parentNode.removeChild(el);
        },

        /**
         * Gets the target of the given event. The event object passed will be
         * the same object that is passed to listeners registered with
         * addEvent().
         *
         * @param   {mixed}             e       The event object
         * @return  {HTMLElement}               The event's target element
         * @public
         * @static
         */
        getTarget: function(e){
            var t = e.target ? e.target : e.srcElement;
            return t.nodeType == 3 ? t.parentNode : t;
        },

        /**
         * Gets the page X/Y coordinates of the mouse event in an [x, y] array.
         * The page coordinates should be relative to the document, and not the
         * viewport. The event object provided here will be the same object that
         * is passed to listeners registered with addEvent().
         *
         * @param   {mixed}         e       The event object
         * @return  {Array}                 The page X/Y coordinates
         * @public
         * @static
         */
        getPageXY: function(e){
            var x = e.pageX || (e.clientX +
                (document.documentElement.scrollLeft || document.body.scrollLeft));
            var y = e.pageY || (e.clientY +
                (document.documentElement.scrollTop || document.body.scrollTop));
            return [x, y];
        },

        /**
         * Prevents the event's default behavior. The event object here will
         * be the same object that is passed to listeners registered with
         * addEvent().
         *
         * @param   {mixed}             e       The event object
         * @return  void
         * @public
         * @static
         */
        preventDefault: function(e){
            if(e.preventDefault){
                e.preventDefault();
            }else{
                e.returnValue = false;
            }
        },

        /**
         * Gets the key code of the given event object (keydown). The event
         * object here will be the same object that is passed to listeners
         * registered with addEvent().
         *
         * @param   {mixed}         e       The event object
         * @return  {Number}                The key code of the event
         * @public
         * @static
         */
        keyCode: function(e){
            return e.which ? e.which : e.keyCode;
        },

        /**
         * Adds an event listener to the given element. It is expected that this
         * function will be passed the event as its first argument.
         *
         * @param   {HTMLElement}   el          The DOM element to listen to
         * @param   {String}        name        The name of the event to register
         *                                      (i.e. 'click', 'scroll', etc.)
         * @param   {Function}      handler     The event handler function
         * @return  void
         * @public
         * @static
         */
        addEvent: function(el, name, handler){
            if(el.addEventListener){
                el.addEventListener(name, handler, false);
            }else if(el.attachEvent){
                el.attachEvent('on' + name, handler);
            }
        },

        /**
         * Removes an event listener from the given element.
         *
         * @param   {HTMLElement}   el          The DOM element to stop listening to
         * @param   {String}        name        The name of the event to stop
         *                                      listening for (i.e. 'click')
         * @param   {Function}      handler     The event handler function
         * @return  void
         * @public
         * @static
         */
        removeEvent: function(el, name, handler){
            if(el.removeEventListener){
                el.removeEventListener(name, handler, false);
            }else if(el.detachEvent){
                el.detachEvent('on' + name, handler);
            }
        },

        /**
         * Appends an HTML fragment to the given element.
         *
         * @param   {HTMLElement}       el      The element to append to
         * @param   {String}            html    The HTML fragment to use
         * @return  void
         * @public
         * @static
         */
        append: function(el, html){
            if(el.insertAdjacentHTML){
                el.insertAdjacentHTML('BeforeEnd', html);
            }else if(el.lastChild){
                var range = el.ownerDocument.createRange();
                range.setStartAfter(el.lastChild);
                var frag = range.createContextualFragment(html);
                el.appendChild(frag);
            }else{
                el.innerHTML = html;
            }
        }

    };

}();

anscheinend ist Zeile 136 das Zeichen 21 nicht okay....


das ist die skin.js

Code:
/**
 * The "classic" theme markup for Shadowbox.
 *
 * This file is part of Shadowbox.
 *
 * Shadowbox is an online media viewer application that supports all of the
 * web's most popular media publishing formats. Shadowbox is written entirely
 * in JavaScript and CSS and is highly customizable. Using Shadowbox, website
 * authors can showcase a wide assortment of media in all major browsers without
 * navigating users away from the linking page.
 *
 * Shadowbox is released under version 3.0 of the Creative Commons Attribution-
 * Noncommercial-Share Alike license. This means that it is absolutely free
 * for personal, noncommercial use provided that you 1) make attribution to the
 * author and 2) release any derivative work under the same or a similar
 * license.
 *
 * If you wish to use Shadowbox for commercial purposes, licensing information
 * can be found at http://mjijackson.com/shadowbox/.
 *
 * @author      Michael J. I. Jackson <mjijackson@gmail.com>
 * @copyright   2007-2008 Michael J. I. Jackson
 * @license     http://creativecommons.org/licenses/by-nc-sa/3.0/
 * @version     SVN: $Id: skin.js 108 2008-07-11 04:19:01Z mjijackson $
 */

if(typeof Shadowbox == 'undefined'){
    throw 'Unable to load Shadowbox skin, base library not found.';
}

/**
 * The HTML markup to use for Shadowbox.
 *
 * IMPORTANT: The script depends on most of these elements being present.
 *
 * @property    {Object}    SKIN
 * @public
 * @static
 */
Shadowbox.SKIN = {

    markup:     '<div id="shadowbox_container">' +
                    '<div id="shadowbox_overlay"></div>' +
                    '<div id="shadowbox">' +
                        '<div id="shadowbox_title">' +
                            '<div id="shadowbox_title_inner"></div>' +
                        '</div>' +
                        '<div id="shadowbox_body">' +
                            '<div id="shadowbox_body_inner"></div>' +
                            '<div id="shadowbox_loading">' +
                                '<div id="shadowbox_loading_indicator"></div>' +
                                '<span><a onclick="Shadowbox.close();">{cancel}</a></span>' +
                            '</div>' +
                        '</div>' +
                        '<div id="shadowbox_info">' +
                            '<div id="shadowbox_info_inner">' +
                                '<div id="shadowbox_counter"></div>' +
                                '<div id="shadowbox_nav">' +
                                    '<a id="shadowbox_nav_close" title="{close}" onclick="Shadowbox.close()"></a>' +
                                    '<a id="shadowbox_nav_next" title="{next}" onclick="Shadowbox.next()"></a>' +
                                    '<a id="shadowbox_nav_play" title="{play}" onclick="Shadowbox.play()"></a>' +
                                    '<a id="shadowbox_nav_pause" title="{pause}" onclick="Shadowbox.pause()"></a>' +
                                    '<a id="shadowbox_nav_previous" title="{previous}" onclick="Shadowbox.previous()"></a>' +
                                '</div>' +
                                '<div class="shadowbox_clear"></div>' +
                            '</div>' +
                        '</div>' +
                    '</div>' +
                '</div>',

    png_fix:    [
        'shadowbox_nav_close',
        'shadowbox_nav_next',
        'shadowbox_nav_play',
        'shadowbox_nav_pause',
        'shadowbox_nav_previous'
    ]

};



Ich hofffe das hilft !

LG
 
Zuletzt bearbeitet:
Die Fehlerkonsole von Firefox meldet aber auch diesen Fehler:
uncaught exception: Unable to load Shadowbox skin, base library not found.

Der hier in skin.js definiert ist:
Javascript:
if(typeof Shadowbox == 'undefined'){
    throw 'Unable to load Shadowbox skin, base library not found.';
}

Woher stammt denn dieses zusätzliche Script eigentlich? In der aktuellen Download-Datei (http://www.shadowbox-js.com/download.html) kann ich diese Script-Datei nicht entdecken.

Vielleicht hilft es ja, wenn du die Reihenfolge der Scriptaufrufe tauscht?

HTML:
<!--<script type="text/javascript" src="src/skin/classic/skin.js"></script>-->
<script type="text/javascript" src="src/adapter/shadowbox-base.js"></script>
<script type="text/javascript" src="src/shadowbox.js"></script>
<script type="text/javascript" src="src/skin/classic/skin.js"></script>


mfg Maik
 
Zurück