|
|
TrioxX
Aloah,
ich sitze gerade an einer Funktion und es nervt mich ^^ Also... Ich arbeite an einem Tagsystem mit AJAX. Mein Problem ist
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?
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 
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 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
|
|