Scripthilfe

Status
Nicht offen für weitere Antworten.
J

Joey

Gast
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:
Code:
<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:
Code:
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 = "";
   }
}
 

merlin2

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

merlin2

Top Contributor
Wildcard hat gesagt.:
merlin2 hat gesagt.:
@Wildcard: Wozu gibts dann den JavaScript-Bereich? :roll:
Was glaubst du wer's hier reingeschoben hat? :roll:
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

Top Contributor
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

Top Contributor
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

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

Joey

Gast
Bei gehts nun auch. Ich hatte nur falsche Zahlen drin. :oops:
Aber vielen Dank. :D
 

Jango

Gesperrter Benutzer
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

Top Contributor
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.
 
Status
Nicht offen für weitere Antworten.

Oben