innerHTML i IE virker ikke, men fint i FF
Hej,Jeg er ved at lave en lille kalender widget som opdateres via strenge sendt fra serveren:
Et eksempel på en streng:
spacer_start|6|a-day|1|a-day|2|a-day|3|a-day|4|a-day|5|a-day|6|a-day|7|a-day|8|a-day|9|a-day|10|a-day|11|a-day|12|a-day|13|a-day|14|a-day|15|a-day|16|a-day|17|a-day|18|a-day|19|a-day|20|a-day|21|a-day|22|a-day|23|a-day|24|a-day|25|a-day|26|a-day|27|a-day|28|a-day|29|a-day|30|a-day|31|a-desc|1|2005
Funktionen ser ud således:
function refreshCal(stream) {
var t = stream.split("-");
var ii = 1;
var html = '<tr>';
for(var i = 0; i < t.length; i++) {
d = t[i].split("|");
switch(d[0]) {
case 'spacer_start':
html += "<td colspan="+d[1]+"></td>";
ii = ii + (d[1]-1);
break;
case 'day':
html += "<td>"+d[1]+"</td>";
break;
case 'spacer_end':
html += "<td colspan="+d[1]+"></td>";
break;
case 'desc':
$('cal_desc').innerHTML = d[1]+' - '+d[2];
var c_month = parseInt(d[1]);
var c_year = parseInt(d[2]);
if(d[1] == 12) {
var b_month = c_month-1;
var b_year = c_year;
var n_month = 1;
var n_year = c_year+1;
} else if (d[1] == 1) {
var b_month = 12;
var b_year = c_year-1;
var n_month = c_month+1;
var n_year = c_year;
} else {
var b_month = c_month-1;
var b_year = c_year;
var n_month = c_month+1;
var n_year = c_year;
}
$('month_back').onclick = function(){cal_init(b_month,b_year);}
$('month_forward').onclick = function(){cal_init(n_month,n_year);}
break;
}
ii++;
if(ii == 8) {
html += "</tr><tr>";
ii = 1;
}
}
alert(html);
$("cal").innerHTML = '';
$("cal").innerHTML = html;
}
Og min HTML således:
<table>
<thead>
<tr><td>S</td><td>M</td><td>T</td><td>O</td><td>T</td><td>F</td><td>L</td></tr>
</thead>
<tbody id="cal">
</tbody>
</table>
Problemet er at den fungere fint i ie, og indsætter HTML strengen når den har parset strengen færdig, men i IE sker der tilsyneladende ikke noget. Den kommer ikke engang med en fejlmeddelelse.
Det skal lige siges at jeg har ligeledes forsøgt en funktion med ren generering af elementerne vha. createElement og appendChild, men det virker tilsyneladende heller ikke.
Selve $() funktionen er blot lig document.getElementById();
Jeg håber nogen kan hjælpe. Hvis noget af ovenstående er uklart eller skal forklares nærmere så spørg endelig.
Pft.