Hallo,
ich möchte eine Tabelle erzeugen mit der es möglich ist auf den Kopf einer Spalte zu klicken und diese dann verschwindet, danach soll ein Link erstellt werden welcher den Namen der ausgeblendeten Spalte trägt. Klickt man auf diesen Link wird die Tabellenspalte wieder dargestellt. Soweit so gut. Nun möchte ich aber das sich die Seite merkt welche Spalten ausgeblendet sind und wenn man den Browser schließt und die Seite erneut aufruft soll sich alles so darstellen wie beim verlassen.
Eigentlich hab ich schon 95% der Aufgabe gelöst. Was mir nur noch fehlt ist eine Kleinigkeit und zwar wenn ich die Cookies auslese dann sollen die Spalten ja wieder automatisch ausgeblendet werden. Und genau das funktioniert nicht, bzw. es funktioniert aber nur wenn ich mir den Inhalt der Cookies per alert() ausgeben lasse. Und genau das ist was ich nicht verstehe. Es gibt keinerlei Fehlermeldung sondern es funktioniert einfach nicht wenn ich das alert() weglasse.
Ich poste am besten mal den Code.
HTML:
Und hier das JS bei dem das alert() im Moment auskommentiert ist, entfernt man den Kommentar dann funktioniert es:
// edit
Was macht alert, was ich mit anderen Funktionen nicht hinbekomme? Ist es möglich den Code von alert() einzusehen? Feuert es irgendwelche events die ich nicht kenne? Ich bin einfach ratlos...
ich möchte eine Tabelle erzeugen mit der es möglich ist auf den Kopf einer Spalte zu klicken und diese dann verschwindet, danach soll ein Link erstellt werden welcher den Namen der ausgeblendeten Spalte trägt. Klickt man auf diesen Link wird die Tabellenspalte wieder dargestellt. Soweit so gut. Nun möchte ich aber das sich die Seite merkt welche Spalten ausgeblendet sind und wenn man den Browser schließt und die Seite erneut aufruft soll sich alles so darstellen wie beim verlassen.
Eigentlich hab ich schon 95% der Aufgabe gelöst. Was mir nur noch fehlt ist eine Kleinigkeit und zwar wenn ich die Cookies auslese dann sollen die Spalten ja wieder automatisch ausgeblendet werden. Und genau das funktioniert nicht, bzw. es funktioniert aber nur wenn ich mir den Inhalt der Cookies per alert() ausgeben lasse. Und genau das ist was ich nicht verstehe. Es gibt keinerlei Fehlermeldung sondern es funktioniert einfach nicht wenn ich das alert() weglasse.
Ich poste am besten mal den Code.
HTML:
HTML:
<div id="hiddenColumns" >
</div>
<table id="aTable">
<tr>
<td id="<%= raiseCOL_ID(COL_ID) %>" ONCLICK="hideColumn(<%=COL_ID%>);" class="tableHead">
Model
</td>
<td id="<%= raiseCOL_ID(COL_ID) %>" ONCLICK="hideColumn(<%=COL_ID%>);" class="tableHead">
Serial#
</td>
</tr>
<tr>
<td><input type="text" onblur="getReturns();"></td>
<td><input type="text" onblur="getReturns();"></td>
</tr>
</table>
Code:
function getReturns() {
getHidden();
}
function hideColumn (colIndex) {
var table = document.all ? document.all.aTable :
document.getElementById('aTable');
for (var r = 0; r < table.rows.length; r++)
try {
table.rows[r].cells[colIndex].style.display = 'none';
}
catch (e) {
}
addToHidden(document.getElementById(colIndex).innerText,colIndex);
set_cookie(colIndex,'true',2);
}
function getHidden() {
for(k=0;k<10;k++) {
cookie = get_cookie(k);
//alert(cookie);
if (cookie == "true") {
hideColumn(k);
}
}
}
function showColumn (colIndex) {
var table = document.all ? document.all.aTable :
document.getElementById('aTable');
for (var r = 0; r < table.rows.length; r++)
try {
table.rows[r].cells[colIndex].style.display = '';
}
catch (e) {
}
for (var i = 0; i < document.getElementById('hiddenColumns').childNodes.length; i++) {
id = "li_hidden_"+colIndex;
given_ID = document.getElementById('hiddenColumns').childNodes.item(i).getAttribute('id');
if( given_ID == id) {
document.getElementById('hiddenColumns').removeChild(document.getElementById('hiddenColumns').childNodes.item(i));
}
}
set_cookie(colIndex,'false',2);
}
function addToHidden (text,id) {
newLI = document.createElement("li");
ID = id;
newID = "hidden_"+id;
newLI_ID= "li_hidden_"+id;
newLI.setAttribute('id', newLI_ID);
newA = document.createElement("a");
newA.setAttribute('id', newID);
newA.setAttribute('href', 'javascript:showColumn('+ID+')');
newTXT = document.createTextNode(text);
document.getElementById('hiddenColumns').appendChild(newLI).appendChild(newA).appendChild(newTXT);
}
function get_cookie( cookieName )
{
strValue = false;
if( strCookie = document.cookie )
{
if( arrCookie = strCookie.match( new RegExp( cookieName + '=([^;]*)', 'g')))
{
strValue=RegExp.$1;
}
}
return(strValue);
}
function set_cookie(cookieName,cookieValue,intDays)
{
if(!is_cookie_enabled())
{
return false;
}
objNow = new Date();
strExp = new Date( objNow.getTime() + ( intDays * 86400000) );
document.cookie = cookieName + '=' +
cookieValue + ';expires=' +
strExp.toGMTString() + ';';
return true;
}
function delete_cookie(cookieName)
{
if(document.cookie)
{
document.cookie = cookieName + '=' +
get_cookie(cookieName) +
';expires=Thu, 01-Jan-1970 00:00:01 GMT;';
return true;
}
return false;
}
function is_cookie_enabled()
{
if(typeof navigator.cookieEnabled!='undefined')
{
return navigator.cookieEnabled;
}
set_cookie('testcookie','testwert',1);
if(!document.cookie)
{
return false;
}
delete_cookie('testcookie');
return true;
}
// edit
Was macht alert, was ich mit anderen Funktionen nicht hinbekomme? Ist es möglich den Code von alert() einzusehen? Feuert es irgendwelche events die ich nicht kenne? Ich bin einfach ratlos...