SEO-Software von Suchmaschinenoptimierung.de

Probleme mit einer Variable

(hier klicken, um zum Original Thread zu gelangen)
TrioxX
Aloah,

ich sitze gerade an einer Funktion und es nervt mich ^^ Also... Ich arbeite an einem Tagsystem mit AJAX. Mein Problem ist

code:
1:
$('home').href


Dummerweise verweist diese Variable auf die aktuelle Seite, auf der ich mich gerade befinde und nicht auf die aktuelle URL.

$('home').href sollte eigentlich sein: www.xyz.de

$('home').href ist aber: www.xyz.de/seite-xyz

Wie bringe ich dem bei, dass diese Variable nur die aufgerufene Domain und nicht noch die aufgerufene Unterseite definiert?
derletztekick
Hi,

Du suchst host/hostname, oder?

Gruß Micha
TrioxX
Genau das, ja. Aber wieso funktioniert $('home').href in einer anderen Funktion und nicht überall? Komischkomisch...
derletztekick
Hi,

ich kenn Deine Funktion nicht ;-)

Gruß Micha
TrioxX
Hier mal eine seperate JS, in der es funktioniert:

- entfernt
derletztekick
Hi,

das nutzt mir nichts, das $('home') schon belegt ist. Wor wird der Wert in $('home') geschrieben und was steht hinter dem Gleichheitszeichen?

Gruß Micha
TrioxX
Hm... Dann kann es nur das sein:

code:
1:
2:
3:
4:
5:
var gu=32;var g=null;var gw=6;var gmw=6;
var bd={'b0':{'w':6,'h':9},'b1':{'w':4,'h':6},'b2':{'w':4,'h':3},'b3':{'w':2,'h':3}};
function $(id){return document.getElementById(id)}
function a(b,c){var bw=bd[b.className]['w'];var bh=bd[b.className]['h'];var mh=0;var h=g[0];var sw=0;var sl=0;var fs=new Array();for(var i=0;i<g.length;i++){if(h==g[i]){sw++}if((h!=g[i]||i+1==g.length)&&sw>0){var temp={'w':sw,'l':sl,'h':h};fs.push(temp);sw=1;sl=i}h=g[i];if(h>mh){mh=h}}var th=0;var tl=0;var bs=-1;for(var j=0;j<bw;j++ ){if(g[j]>th){th=g[j]}}for(var i=0;i<fs.length;i++ ){var hs=(mh-fs[i]['h']);var ws=bw/fs[i]['w'];var s=hs*hs+ws*6;if(fs[i]['w']>=bw&&s>bs){th=fs[i]['h'];tl=fs[i]['l'];bs=s}}var nh=th+bh;for(var j=0;j<bw;j++ ){g[tl+j]=nh}c.appendChild(b);b.style.left=(tl*gu)+'px';b.style.top=(th*gu)+'px';for(var i=0;i<g.length;i++){if(g[i]>mh){mh=g[i]}}c.style.height=(mh*gu)+'px';$('images').style.height=(mh*gu)+'px'}
function solve(id){;window.setTimeout("solve('"+id+"')",500);var c=$(id);var nw=parseInt(c.offsetWidth);var ngw=parseInt(nw/gu);ngw=ngw<gmw?gmw:ngw;if(gw==ngw){return;}else{gw=ngw}b=new Array();while(c.hasChildNodes()){e=c.removeChild(c.firstChild);if(e.tagName=='DIV'){b.push(e)}}g=new Array(gw);for(var i=0;i<g.length;i++ ){g[i]=0}for(var i=0;i<b.length;i++){a(b[i],c)}}


Nur sieht das Ganze etwas verschlüsselt aus, was der Grund dafür sein wird, dass ich nicht dahinter steige ^^ Der Code stmmt von Google, aber frag mich nicht woher genau?!
derletztekick
Hi,

nagut, das schau ich nun nicht durch. Die Suche nach "home" ergab zumindets kein Treffer.

Gruß Micha
TrioxX
Wie lässt sich das denn "lesbar" machen? Dann versuche ich das selbst wieder herzu richten großes Grinsen Soll ja nicht deine Aufgabe werden ^^

Ich hatte gehofft, dass irgendein Firefox Addon mir helfen würde, das Ganze lesbar zu machen. Aber ich finde nichts geeignetes :S Ich weiß nur, dass das prototype ist.
derletztekick
Hallo,

indem Du an den richtigen Stellen ein Enter setzte. Die ersten drei Zeilen sehen dann so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var gu=32;
var g=null;
var gw=6;
var gmw=6;

var bd={'b0':{'w':6,'h':9},'b1':{'w':4,'h':6},'b2':{'w':4,'h':3},'b3':{'w':2,'h':3}};

function $(id){
  return document.getElementById(id);
}


Gruß Micha
TrioxX
Naja, ich meinte eher lesbar im Sinne von "herausfinden, wo die Funktion steckt, kurz gesagt: Entschlüsseln". Da muss ja ein Sinn hinter stecken ^^
moonsword
sieht man doch?
das liefert dir ein getElementById

hast du was mit einer id von "home"....ich glaube nicht....ich denke du kommst eher mit zurecht mit: document.href
TrioxX
Es geht mir speziell um dieses:

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:
var gu = 32;
var g = null;
var gw = 6;
var gmw = 6;
var bd = {
    'b0' : {
        'w' : 6, 'h' : 9
    },
    'b1' : {
        'w' : 4, 'h' : 6
    },
    'b2' : {
        'w' : 4, 'h' : 3
    },
    'b3' : {
        'w' : 2, 'h' : 3
    }
};
function $(id)
{
    return document.getElementById(id)
}
function a(b, c)
{
    var bw = bd[b.className]['w'];
    var bh = bd[b.className]['h'];
    var mh = 0;
    var h = g[0];
    var sw = 0;
    var sl = 0;
    var fs = new Array();
    for (var i = 0; i < g.length; i++)
    {
        if (h == g[i]) {
            sw++
        }
        if ((h != g[i] || i + 1 == g.length) && sw > 0) {
            var temp = {
                'w' : sw, 'l' : sl, 'h' : h
            };
            fs.push(temp);
            sw = 1;
            sl = i
        }
        h = g[i];
        if (h > mh) {
            mh = h;
        }
    }
    var th = 0;
    var tl = 0;
    var bs =- 1;
    for (var j = 0; j < bw; j++ ) {
        if (g[j] > th) {
            th = g[j];
        }
    }
    for (var i = 0; i < fs.length; i++ )
    {
        var hs = (mh - fs[i]['h']);
        var ws = bw / fs[i]['w'];
        var s = hs * hs + ws * 6;
        if (fs[i]['w'] >= bw && s > bs) {
            th = fs[i]['h'];
            tl = fs[i]['l'];
            bs = s;
        }
    }
    var nh = th + bh;
    for (var j = 0; j < bw; j++ ) {
        g[tl + j] = nh
    }
    c.appendChild(b);
    b.style.left = (tl * gu) + 'px';
    b.style.top = (th * gu) + 'px';
    for (var i = 0; i < g.length; i++) {
        if (g[i] > mh) {
            mh = g[i];
        }
    }
    c.style.height = (mh * gu) + 'px';
    $('images').style.height = (mh * gu) + 'px'
}
function solve(id)
{;
    window.setTimeout("solve('" + id + "')", 500);
    var c = $(id);
    var nw = parseInt(c.offsetWidth);
    var ngw = parseInt(nw / gu);
    ngw = ngw < gmw ? gmw : ngw;
    if (gw == ngw) {
        return;
    }
    else {
        gw = ngw
    }
    b = new Array();
    while (c.hasChildNodes()) {
        e = c.removeChild(c.firstChild);
        if (e.tagName == 'DIV') {
            b.push(e)
        }
    }
    g = new Array(gw);
    for (var i = 0; i < g.length; i++ ) {
        g[i] = 0
    }
    for (var i = 0; i < b.length; i++) {
        a(b[i], c)
    }
}


Irgendwo hier muss das ja definiert sein... ?!

PS: Zu deiner Frage...

code:
1:
<a href="index" id="home"><img title="Home" id="logo" alt="Home" src="media/logo.png"/></a>
derletztekick
Hi,

ahja, nun schau Dir mal den Code an:

code:
1:
<a href="index" id="home"><img title="Home" id="logo" alt="Home" src="media/logo.png"/></a>


und Du wolltest
code:
1:
$('home').href
haben.

wenn Du die sinnlosen Funktionen mal weg lässt, bleibt also:

code:
1:
document.getElementById("home").href


In einem Link gibt es aber kein Attribut href, so dass vermutlich einfach die aktuelle Seitenadresse genommen wird; inkls. der entsprechenden Datei und nicht nur der hostname.

Du nutzt hier sicher ein Framework, oder? In 90% ist es die Kanonen auf Spatzen Wahl, da man für sein eigentliches Problem nur marginale Teile verwendet. Im Übrigen solltest Du Deine Postings erst löschen/beschneiden, wenn das Problem gelöst ist.

Gruß Micha
TrioxX
Ich hab vorher mit jquery gearbeitet. Das ist aber nicht mehr der Fall. Ich besitze lediglich nurnoch diese JS Datei, die alles regelt. Interessanterweise funktioniert das ja an anderer Stelle genau so?!

Wie gesagt... Ich glaube, dass der Wurm in dem o.g. Code steckt. Und falls nicht... Wie und wo sollte ich das dann am besten lösen?!

EDIT:

Reicht doch so, oder?

code:
1:
2:
3:
4:
function $(home)
{
    return window.location.hostname;
}
TroX
nein. damit erstellst du eine funktion $, die den parameter home besitzt.

code:
1:
2:
3:
var home = window.location.hostname;


wäre da mmn. besser
derletztekick
Hallo,

du überschreibst mit Deiner Methode

code:
1:
2:
3:
4:
5:
function $(home)
{
    return window.location.hostname;
}


die existierende Methode. Ob das sinnvoll iost, weißt Du allein. Ich würde da eher sowas draus machen:

code:
1:
2:
3:
4:
5:
6:
7:
function $(home)
{
if (home == "home")
    return window.location.hostname;
return document.getElementById(home);
}


Micha
TrioxX
Dnke ich werds ausprobieren, sobald sich mein Server wieder meldet großes Grinsen
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.