tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
512
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    Hi zusammen,

    ich habe im Internet ein für mich brauchbares DHTML Menü gefunden, allerdings kann ich es nicht in einen div-Tag setzen. Wie mir scheint baut es sich irgendwo Layer, aber das finde ich nicht. Ich hätte es lieber, dass ich keine absolute Position festlegen muss, sondern dies im HTML Code mache. Mein Problem ist, dass ich nicht so gut JavaScript kann, daher wär es gut, wenn mir da jemand weiter helfen könnte, wo ich das Script ändern müsste.


    Gruß Radhad


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    /*
      --- menu level scope settins structure --- 
      note that this structure has changed its format since previous version.
      Now this structure has the same layout as Tigra Menu GOLD.
      Format description can be found in product documentation.
    */
    var MENU_POS = [
    {
        // item sizes
        'height': 20,
        'width': 120,
        // menu block offset from the origin:
        //  for root level origin is upper left corner of the page
        //  for other levels origin is upper left corner of parent item
        'block_top': 99,
        'block_left': 287,
        // offsets between items of the same level
        'top': 0,
        'left': 119,
        // time in milliseconds before menu is hidden after cursor has gone out
        // of any items
        'hide_delay': 200,
        'expd_delay': 200,
        'css' : {
            'outer': ['m0l0oout', 'm0l0oover'],
            'inner': ['m0l0iout', 'm0l0iover']
        }
    },
    {
        'height': 20,
        'width': 150,
        'block_top': 23,
        'block_left': 0,
        'top': 21,
        'left': 0,
        'css': {
            'outer' : ['m0l1oout', 'm0l1oover'],
            'inner' : ['m0l1iout', 'm0l1iover']
        }
    },
    {
        'block_top': 5,
        'block_left': 140,
        'css': {
            'outer': ['m0l2oout', 'm0l2oover'],
            'inner': ['m0l1iout', 'm0l2iover']
        }
    }
    ]

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    
    // Title: tigra menu
    // Description: See the demo at url
    // URL: http://www.softcomplex.com/products/tigra_menu/
    // Version: 2.0 (commented source)
    // Date: 04-05-2003 (mm-dd-yyyy)
    // Tech. Support: http://www.softcomplex.com/forum/forumdisplay.php?fid=40
    // Notes: This script is free. Visit official site for further details.
     
    // --------------------------------------------------------------------------------
    // global collection containing all menus on current page
    var A_MENUS = [];
     
    // --------------------------------------------------------------------------------
    // menu class
    function menu (a_items, a_tpl) {
     
        // browser check
        if (!document.body || !document.body.style)
            return;
     
        // store items structure
        this.a_config = a_items;
     
        // store template structure
        this.a_tpl = a_tpl;
     
        // get menu id
        this.n_id = A_MENUS.length;
     
        // declare collections
        this.a_index = [];
        this.a_children = [];
     
        // assigh methods and event handlers
        this.expand      = menu_expand;
        this.collapse    = menu_collapse;
     
        this.onclick     = menu_onclick;
        this.onmouseout  = menu_onmouseout;
        this.onmouseover = menu_onmouseover;
        this.onmousedown = menu_onmousedown;
     
        // default level scope description structure 
        this.a_tpl_def = {
            'block_top'  : 16,
            'block_left' : 16,
            'top'        : 20,
            'left'       : 4,
            'width'      : 120,
            'height'     : 22,
            'hide_delay' : 0,
            'expd_delay' : 0,
            'css'        : {
                'inner' : '',
                'outer' : ''
            }
        };
        
        // assign methods and properties required to imulate parent item
        this.getprop = function (s_key) {
            return this.a_tpl_def[s_key];
        };
     
        this.o_root = this;
        this.n_depth = -1;
        this.n_x = 0;
        this.n_y = 0;
     
        //  init items recursively
        for (n_order = 0; n_order < a_items.length; n_order++)
            new menu_item(this, n_order);
     
        // register self in global collection
        A_MENUS[this.n_id] = this;
     
        // make root level visible
        for (var n_order = 0; n_order < this.a_children.length; n_order++)
            this.a_children[n_order].e_oelement.style.visibility = 'visible';
    }
     
    // --------------------------------------------------------------------------------
    function menu_collapse (n_id) {
        // cancel item open delay
        clearTimeout(this.o_showtimer);
     
        // by default collapse to root level
        var n_tolevel = (n_id ? this.a_index[n_id].n_depth : 0);
        
        // hide all items over the level specified
        for (n_id = 0; n_id < this.a_index.length; n_id++) {
            var o_curritem = this.a_index[n_id];
            if (o_curritem.n_depth > n_tolevel && o_curritem.b_visible) {
                o_curritem.e_oelement.style.visibility = 'hidden';
                o_curritem.b_visible = false;
            }
        }
     
        // reset current item if mouse has gone out of items
        if (!n_id)
            this.o_current = null;
    }
     
    // --------------------------------------------------------------------------------
    function menu_expand (n_id) {
     
        // expand only when mouse is over some menu item
        if (this.o_hidetimer)
            return;
     
        // lookup current item
        var o_item = this.a_index[n_id];
     
        // close previously opened items
        if (this.o_current && this.o_current.n_depth >= o_item.n_depth)
            this.collapse(o_item.n_id);
        this.o_current = o_item;
     
        // exit if there are no children to open
        if (!o_item.a_children)
            return;
     
        // show direct child items
        for (var n_order = 0; n_order < o_item.a_children.length; n_order++) {
            var o_curritem = o_item.a_children[n_order];
            o_curritem.e_oelement.style.visibility = 'visible';
            o_curritem.b_visible = true;
        }
    }
     
    // --------------------------------------------------------------------------------
    //
    // --------------------------------------------------------------------------------
    function menu_onclick (n_id) {
        // don't go anywhere if item has no link defined
        return Boolean(this.a_index[n_id].a_config[1]);
    }
     
    // --------------------------------------------------------------------------------
    function menu_onmouseout (n_id) {
     
        // lookup new item's object 
        var o_item = this.a_index[n_id];
     
        // apply rollout
        o_item.e_oelement.className = o_item.getstyle(0, 0);
        o_item.e_ielement.className = o_item.getstyle(1, 0);
        
        // update status line   
        o_item.upstatus(7);
     
        // run mouseover timer
        this.o_hidetimer = setTimeout('A_MENUS['+ this.n_id +'].collapse();',
            o_item.getprop('hide_delay'));
    }
     
    // --------------------------------------------------------------------------------
    function menu_onmouseover (n_id) {
     
        // cancel mouseoute menu close and item open delay
        clearTimeout(this.o_hidetimer);
        this.o_hidetimer = null;
        clearTimeout(this.o_showtimer);
     
        // lookup new item's object 
        var o_item = this.a_index[n_id];
     
        // update status line   
        o_item.upstatus();
     
        // apply rollover
        o_item.e_oelement.className = o_item.getstyle(0, 1);
        o_item.e_ielement.className = o_item.getstyle(1, 1);
        
        // if onclick open is set then no more actions required
        if (o_item.getprop('expd_delay') < 0)
            return;
     
        // run expand timer
        this.o_showtimer = setTimeout('A_MENUS['+ this.n_id +'].expand(' + n_id + ');',
            o_item.getprop('expd_delay'));
     
    }
     
    // --------------------------------------------------------------------------------
    // called when mouse button is pressed on menu item
    // --------------------------------------------------------------------------------
    function menu_onmousedown (n_id) {
        
        // lookup new item's object 
        var o_item = this.a_index[n_id];
     
        // apply mouse down style
        o_item.e_oelement.className = o_item.getstyle(0, 2);
        o_item.e_ielement.className = o_item.getstyle(1, 2);
     
        this.expand(n_id);
    //  this.items[id].switch_style('onmousedown');
    }
     
     
    // --------------------------------------------------------------------------------
    // menu item Class
    function menu_item (o_parent, n_order) {
     
        // store parameters passed to the constructor
        this.n_depth  = o_parent.n_depth + 1;
        this.a_config = o_parent.a_config[n_order + (this.n_depth ? 3 : 0)];
     
        // return if required parameters are missing
        if (!this.a_config) return;
     
        // store info from parent item
        this.o_root    = o_parent.o_root;
        this.o_parent  = o_parent;
        this.n_order   = n_order;
     
        // register in global and parent's collections
        this.n_id = this.o_root.a_index.length;
        this.o_root.a_index[this.n_id] = this;
        o_parent.a_children[n_order] = this;
     
        // calculate item's coordinates
        var o_root = this.o_root,
            a_tpl  = this.o_root.a_tpl;
     
        // assign methods
        this.getprop  = mitem_getprop;
        this.getstyle = mitem_getstyle;
        this.upstatus = mitem_upstatus;
     
        this.n_x = n_order
            ? o_parent.a_children[n_order - 1].n_x + this.getprop('left')
            : o_parent.n_x + this.getprop('block_left');
     
        this.n_y = n_order
            ? o_parent.a_children[n_order - 1].n_y + this.getprop('top')
            : o_parent.n_y + this.getprop('block_top');
     
        // generate item's HMTL
        document.write (
            '<a id="e' + o_root.n_id + '_'
                + this.n_id +'o" class="' + this.getstyle(0, 0) + '" href="' + this.a_config[1] + '"'
                + (this.a_config[2] && this.a_config[2]['tw'] ? ' target="'
                + this.a_config[2]['tw'] + '"' : '') + ' style="position: absolute; top: '
                + this.n_y + 'px; left: ' + this.n_x + 'px; width: '
                + this.getprop('width') + 'px; height: '
                + this.getprop('height') + 'px; visibility: hidden;'
                +' z-index: ' + this.n_depth + ';" '
                + 'onclick="return A_MENUS[' + o_root.n_id + '].onclick('
                + this.n_id + ');" onmouseout="A_MENUS[' + o_root.n_id + '].onmouseout('
                + this.n_id + ');" onmouseover="A_MENUS[' + o_root.n_id + '].onmouseover('
                + this.n_id + ');" onmousedown="A_MENUS[' + o_root.n_id + '].onmousedown('
                + this.n_id + ');"><div  id="e' + o_root.n_id + '_'
                + this.n_id +'i" class="' + this.getstyle(1, 0) + '">'
                + this.a_config[0] + "</div></a>\n"
            );
        this.e_ielement = document.getElementById('e' + o_root.n_id + '_' + this.n_id + 'i');
        this.e_oelement = document.getElementById('e' + o_root.n_id + '_' + this.n_id + 'o');
     
        this.b_visible = !this.n_depth;
     
        // no more initialization if leaf
        if (this.a_config.length < 4)
            return;
     
        // node specific methods and properties
        this.a_children = [];
     
        // init downline recursively
        for (var n_order = 0; n_order < this.a_config.length - 3; n_order++)
            new menu_item(this, n_order);
    }
     
    // --------------------------------------------------------------------------------
    // reads property from template file, inherits from parent level if not found
    // ------------------------------------------------------------------------------------------
    function mitem_getprop (s_key) {
     
        // check if value is defined for current level
        var s_value = null,
            a_level = this.o_root.a_tpl[this.n_depth];
     
        // return value if explicitly defined
        if (a_level)
            s_value = a_level[s_key];
     
        // request recursively from parent levels if not defined
        return (s_value == null ? this.o_parent.getprop(s_key) : s_value);
    }
    // --------------------------------------------------------------------------------
    // reads property from template file, inherits from parent level if not found
    // ------------------------------------------------------------------------------------------
    function mitem_getstyle (n_pos, n_state) {
     
        var a_css = this.getprop('css');
        var a_oclass = a_css[n_pos ? 'inner' : 'outer'];
     
        // same class for all states    
        if (typeof(a_oclass) == 'string')
            return a_oclass;
     
        // inherit class from previous state if not explicitly defined
        for (var n_currst = n_state; n_currst >= 0; n_currst--)
            if (a_oclass[n_currst])
                return a_oclass[n_currst];
    }
     
    // ------------------------------------------------------------------------------------------
    // updates status bar message of the browser
    // ------------------------------------------------------------------------------------------
    function mitem_upstatus (b_clear) {
        window.setTimeout("window.status=unescape('" + (b_clear
            ? ''
            : (this.a_config[2] && this.a_config[2]['sb']
                ? escape(this.a_config[2]['sb'])
                : escape(this.a_config[0]) + (this.a_config[1]
                    ? ' ('+ escape(this.a_config[1]) + ')'
                    : ''))) + "')", 10);
    }
     
    // --------------------------------------------------------------------------------
    // that's all folks
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hallo....

    nicht alles was einfach aussieht, ist auch einfach.
    Das, was du möchtest, würde einen kompletten Umbau des Skripts erfordern.
    Ich glaube, es ist sinnvoller, wenn du dir gleich ein Skript suchst, welches insgesamt deinen Anforderungen entspricht....Menues gibts nun wirklich wie Sand am Meer.... und vor allem auch welche, die die Seite auch noch ohne JS navigierbar lassen.
     

  3. #3
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    Da ist ja das Problem. Es gibt viel zu viele davon. Ich habe mal dasselbe ausprobiert, wie es auf adrivo.com zu sehen ist. Allerdings wollte es erst garnicht funktionieren ... . Dann suche ich nochmal erneut bei Google nach DHTML etc.


    Danke für deine Antwort.


    Gruß Radhad
     

Ähnliche Themen

  1. DHTML Menü (JS) mit CSS
    Von monaco05 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 27.08.05, 21:53
  2. Problem mit DHTML-Menü
    Von Jan-Frederik Stieler im Forum CSS
    Antworten: 2
    Letzter Beitrag: 09.03.05, 16:25
  3. Dhtml Menü fix
    Von danielmueller im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 02.02.04, 13:54
  4. DHTML Menü problem
    Von ITBaer im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 01.08.03, 14:01
  5. Menü erstellen mit Layern ohne DW
    Von lordofscotland im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 29.03.02, 00:11