# Scripthilfe



## Joey (29. Aug 2007)

Hallo Leute,
Ich habe hier ein Script, mit dem ich meine Tabelle sortieren kann. Leider ist das Script für 3 Spalten geschrieben, ich brauche aber mehrere Spalten. Kann mir einer sagen was ich ändern muss und auch wieso? Ich habs soweit umgebaut, nur leider reagieren Spalte 4-9 nicht.
Danke

Hier der HTML Teil:

```
<body onload="init_tabsort('temperaturen')">
<form action="javascript:void(0)">
<table class="bg3" id="temperaturen" border="1" summary="Tabelle mit Wärmeleitwerten von Metallen">
<colgroup>
<col class="s23">
<col class="s43">
<col class="s43">
<col class="s43">
<col class="s43">
<col class="s43">
<col class="s43">
<col class="s43">
<col class="s43">
</colgroup>
<thead>
<tr>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','an',0)"><span id="temperaturen_sort_img_0"></span>
Hersteller</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',1)"><span id="temperaturen_sort_img_1"></span>
12V Idle</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',2)"><span id="temperaturen_sort_img_2"></span>
12V Load</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',3)"><span id="temperaturen_sort_img_3"></span>
7V Idle</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',4)"><span id="temperaturen_sort_img_4"></span>
7V Load</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',5)"><span id="temperaturen_sort_img_5"></span>
5V Idle</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','n',6)"><span id="temperaturen_sort_img_6"></span>
5V Load</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','an',7)"><span id="temperaturen_sort_img_7"></span>
dB gemessen</button></th>
<th><button type="button" class="s42 bg1" onClick="tabsort('temperaturen','an',8)"><span id="temperaturen_sort_img_8"></span>
dB subjektiv</button></th>
</tr>
</thead>
<tbody>
<tr>
<td class="b7">Thermaltake1</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
</tr>
<tr>
<td class="b7">Thermaltake2</td>
<td class="b7">25°</td>
<td class="b7">35dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
<td class="b7">31°</td>
<td class="b7">30dB</td>
</tr>
</tbody>
</table>
</form>
```

Und hier das Script:

```
var default_order = "asc"; // "asc" || "desc"
var asc_img_uri = "asc.gif";
var desc_img_uri = "desc.gif";
var asc_img_alt_text =
    "aufsteigend sortiert: ändern in absteigend sortiert";
var desc_img_alt_text =
    "absteigend sortiert: ändern in aufsteigend sortiert";

var tables = new Array();
var ti = 0;

function sort_table(id) {
   this.id = id;
   this.obj;
   this.tbody_obj;
   this.sort_cols = 0;
   this.sort_rows = 0;
   this.img_ids = new Array();
   this.tr_ids = new Array();
   this.td_ids = new Array();
   this.active_sort_col;
   this.active_sort_order = default_order;
}

function init_tabsort(table_id) {
   if(!document.getElementById) return;
   tables[ti] = new sort_table(table_id);
   var t = ti;
   ti += 1;
   tables[t].obj = document.getElementById(table_id);
   for(var i = 0; i < tables[t].obj.childNodes.length; i++) {
    switch(tables[t].obj.childNodes[i].nodeName.toLowerCase()) {
         case 'colgroup':
            for(j = 0;
            j < tables[t].obj.childNodes[i].childNodes.length;
            j++)
if(tables[t].obj.childNodes[i].childNodes[j].nodeName.
toLowerCase() == 'col')
               tables[t].sort_cols += 1;
            break;
         case 'tbody':
            tables[t].tbody_obj = tables[t].obj.childNodes[i];
            break;
         default: break;
      }
   }
   var tri = 0;
   var tdi = 0;
   for(i = 0; i < tables[t].tbody_obj.childNodes.length; i++) {
if(tables[t].tbody_obj.childNodes[i].nodeName.toLowerCase()
      == 'tr') {
         tables[t].tbody_obj.childNodes[i].id = 'tr_' + tri;
         tables[t].tr_ids.push('tr_' + tri);
         tables[t].sort_rows += 1;
         tdi = 0;
         for(j = 0;
         j < tables[t].tbody_obj.childNodes[i].childNodes.length; j++) {
if(tables[t].tbody_obj.childNodes[i].childNodes[j].nodeName.toLowerCase() == 'td') {
   tables[t].tbody_obj.childNodes[i].childNodes[j].id
   = 'tr_' + tri + '_td_' + tdi;
   tables[t].td_ids.push('tr_' + tri + '_td_' + tdi);
               tdi += 1;
            }
         }
         tri += 1;
      }
   }
}

function get_sort_table_obj_by_id(id) {
   for(var i = 0; i < tables.length; i++)
      if(tables[i].id == id)
         return(tables[i]);
}

function numsort(a,b) {
   return parseFloat(a) - parseFloat(b);
}

function tabsort(table_id, sort_type, col_n) {
   if(!document.getElementById) return;
   var delimiter = "|||||";
   var to = get_sort_table_obj_by_id(table_id);
   var sort_array = new Array();
   for(var i = 0; i < to.sort_rows; i++) {
      tr_array = new Array();
      tr_id = 'tr_' + i;
      td_id = tr_id + '_td_' + col_n;
      tr_array.push(document.getElementById(td_id).innerHTML);
      for(var j = 0; j < to.sort_cols; j++) {
          if(j == col_n) continue;
          else {
             tr_id = 'tr_' + i;
             td_id = tr_id + '_td_' + j;
             tr_array.push
             (document.getElementById(td_id).innerHTML);
          }
      }
      tr_str = tr_array.join(delimiter);
      sort_array.push(tr_str);
   }
   if(sort_type == 'an')
      sort_array.sort();
   else if(sort_type == 'n')
      sort_array.sort(numsort);
   if(to.active_sort_order == 'desc') {
      sort_array.reverse();
      to.active_sort_order = 'asc';
   }
   else
      to.active_sort_order = 'desc';
   for(i = 0; i < sort_array.length; i++) {
      tr_array = sort_array[i].split(delimiter);
      first = tr_array.shift();
      tr_array.splice(col_n, 0, first);
      for(j = 0; j < to.sort_cols; j++) {
         tr_id = 'tr_' + i;
         td_id = tr_id + '_td_' + j;
         document.getElementById(td_id).innerHTML = tr_array[j];
      }
   }
   var img_html;
   if(to.active_sort_order == 'asc')
      img_html = '[img]' + desc_img_uri + '[/img]';
   else
      img_html = '[img]' + asc_img_uri + '[/img]';
   for(i = 0; i < to.sort_cols; i++) {
      if(i == col_n)
document.getElementById(table_id + '_sort_img_' + i).innerHTML =
img_html + " ";
      else
         document.getElementById(table_id + '_sort_img_' + i).innerHTML = "";
   }
}
```


----------



## Wildcard (29. Aug 2007)

Falsches Forum, es geht hier nicht um Javascript, sondern um Java.


----------



## merlin2 (29. Aug 2007)

@Wildcard: Wozu gibts dann den JavaScript-Bereich? :roll:
@Joey: Gedulde dich, ich werde mir das Script mal ansehen.


----------



## Wildcard (29. Aug 2007)

merlin2 hat gesagt.:
			
		

> @Wildcard: Wozu gibts dann den JavaScript-Bereich? :roll:


Was glaubst du wer's hier reingeschoben hat?  :roll:


----------



## merlin2 (29. Aug 2007)

Wildcard hat gesagt.:
			
		

> merlin2 hat gesagt.:
> 
> 
> 
> ...


Ohne das kenntlich zu machen. :roll: 

Wenn ich im JavaScript-Bereich sehe, dass jemand die Frage einfach an ein anderes Forum delegieren will, bin ich nicht erfreut, denn ich bemühe mich, auch JavaScript-Fragen zu beantworten.


----------



## Wildcard (29. Aug 2007)

Sonst noch Beschwerden, oder sind wir hier durch?


----------



## merlin2 (29. Aug 2007)

Du hast damit angefangen, als du dich darüber beschwert hast, dass er im falschen Forum ist.


----------



## Wildcard (29. Aug 2007)

Was auch völlig legitim ist, weil es sich um ein Java Forum handelt.


----------



## merlin2 (29. Aug 2007)

Aber eine Beschwerde.


----------



## Wildcard (29. Aug 2007)

Der kurze Satz dient zur Erklärung für den OP, der sich vermutlich wundert warum sein Thread plötzlich an anderer Stelle auftaucht. Weiterhin wird dadurch zum ausdruck gebracht, dass die Qualität der zu erwartenden Hilfe im Allgemeinen hinter dem üblichen Standard des Boards zurückbleiben wird, da es sich um ein fachfremdes Thema handelt. Eine Beschwerde allerhöchstens implizit, da es der OP versäumt hat den Sticky zu lesen, was eigentlich von jedem erwartet werden kann.


----------



## merlin2 (29. Aug 2007)

Dann schlage ich hiermit vor, dass du deine Postings in diesem Thread sein lässt, falls du nichts zur Lösung beizutragen hast. :bae: 
(Ich gebs ja zu: Ich hab angefangen.  )


----------



## merlin2 (31. Aug 2007)

Welchen Browser benutzt du denn? Bei mir funktioniert *alles* im FF, aber *nichts* im IE.
Der IE spuckt Fehler aus, der FF nicht.


----------



## Joey (31. Aug 2007)

Bei gehts nun auch. Ich hatte nur falsche Zahlen drin.   
Aber vielen Dank.


----------



## merlin2 (31. Aug 2007)

Dann kann also bitte einer der Moderatoren das Thema abhaken.


----------



## Jango (31. Aug 2007)

merlin2 hat gesagt.:
			
		

> @Joey: Gedulde dich, ich werde mir das Script mal ansehen.


Na immerhin nach zwei Tagen doch noch eine Reaktion von dir zum Thema:



			
				merlin2 hat gesagt.:
			
		

> Bei mir funktioniert alles im FF, aber nichts im IE.
> Der IE spuckt Fehler aus, der FF nicht.


Hut ab vor dir - großer Zauberer!

Edit: Besser wäre es, wenn du dich in Zukunft aus Dingen raushalten würdest, 
von denen du keine Ahnung hast (wurde dir doch schon oft gesgt, oder :wink: ) 
und einfach die Mitarbeiter hier ihre Arbeit machen lässt - auch mal ohne sinnfreies Gelaber.  :autsch:  :bloed: .


----------



## merlin2 (31. Aug 2007)

Ich habe nicht geschrieben, dass ich glaube, dass ich das problem lösen könnte.
Aber es stimmt nicht, dass ich keine Ahnung von JavaScript habe und meine (wie ich gerne zugebe, nicht umfassenden) JavaScript-Kenntnisse haben schon mehreren Leuten geholfen.

Übrigens beziehe ich mich mit meinem Nickname merlin2 nicht auf den Zauberer Merlin.


----------

