montiv49 Inviato 22 Novembre 2006 Segnala Condividi Inviato 22 Novembre 2006 Qualcuno mi sa dire perchè lo script seguente funziona in IE ma non in Firefox e Safari? Ho cercato a lungo in rete ma senza risultato. In particolare la console degli errori di firefox mi segnala " srcElem has no properties" e punta a while (srcElem.tagName...........) Nelle chiamate alle funzioni l'argomento è event (es. <tr onClick="CurrentRecord(event)"> Qualunque tipo di aiuto sarà gradito. Grazie <script language="JavaScript"> <!-- var currRow = -1; var selRow = -1; var HColor="cyan"; var SColor = "#33FF33"; function CurrentRecord(evt){ if (!evt) evt = window.event; var srcElem = evt.target || evt.srcElement; while (srcElem.tagName != "TR" && srcElem.tagName != "TABLE" ) { srcElem = srcElem.parentElement; } if(srcElem.tagName != "TR") return; if(srcElem.rowIndex <= 0 ) return; if (selRow != -1) selRow.runtimeStyle.backgroundColor = ''; srcElem.runtimeStyle.backgroundColor = SColor; selRow = srcElem; document.form1.Puntatore.value = srcElem.rowIndex; document.form1.submit() } function ColON(evt) { if (!evt) evt = window.event; var srcElem = evt.target || evt.srcElement; while (srcElem.tagName != "TR" && srcElem.tagName != "TABLE") srcElem = srcElem.parentElement; if(srcElem.tagName != "TR") return; if (srcElem.rowIndex >= 1) hilite(srcElem); else hilite(-1); } function ColOFF() { hilite(-1); } function hilite(newRow) { if (HColor != null ) { if (currRow != -1 && currRow!=selRow) { currRow.runtimeStyle.backgroundColor = ''; } if (newRow != -1 && newRow!=selRow) { newRow.runtimeStyle.backgroundColor = HColor; } } currRow = newRow; } Link al commento Condividi su altri siti Altre opzioni di condivisione...
pigiuz Inviato 22 Novembre 2006 Segnala Condividi Inviato 22 Novembre 2006 hai provato a vedere se srcElem ha effettivamente un attributo di nome tagName? magari è un attributo proprietario di IE... Sestoincomodo - Garage Pop Band - [url]www.sestoincomodo.it[/url] Link al commento Condividi su altri siti Altre opzioni di condivisione...
montiv49 Inviato 23 Novembre 2006 Autore Segnala Condividi Inviato 23 Novembre 2006 Parrebbe di no. I siti javascript lo danno come attributo valido per tutti i browser Link al commento Condividi su altri siti Altre opzioni di condivisione...
montiv49 Inviato 23 Novembre 2006 Autore Segnala Condividi Inviato 23 Novembre 2006 Problema risolto con lo script seguente function tableruler() { if (document.getElementById && document.createTextNode) { var tables=document.getElementsByTagName('table'); for (var i=0;i<tables.length;i++) { if(tables.className=='ruler') { var trs=tables.getElementsByTagName('tr'); for(var j=1;j<trs.length;j++) { if(trs[j].parentNode.nodeName=='TBODY') { trs[j].onmouseover=function(){this.className='ruled';return false} trs[j].onmouseout=function(){this.className='';return false} trs[j].onclick=function(){ var nrow= parseInt(this.getAttribute('id'))+1 ; document.form1.Puntatore.value = nrow; document.form1.submit()} } } } } } } window.onload=function(){tableruler();} Id del <tr> che serve è generato in modo incrementale quando si popola la tabella, e nella <table> è inserita class="ruler" Grazie comunque Lo script è di libero uso Link al commento Condividi su altri siti Altre opzioni di condivisione...
pigiuz Inviato 28 Novembre 2006 Segnala Condividi Inviato 28 Novembre 2006 "i siti javascript".... l'unico da prendere in considerazione è w3schools.com ^^ Sestoincomodo - Garage Pop Band - [url]www.sestoincomodo.it[/url] Link al commento Condividi su altri siti Altre opzioni di condivisione...
montiv49 Inviato 29 Novembre 2006 Autore Segnala Condividi Inviato 29 Novembre 2006 In realtà ho prodotto lo script funzionante dopo rilettura dei manuali e avendo trovato qualche pezzo in rete. In realtà il problema è quello solito: IE è pieno di elementi proprietari che lo rendono incompatibile con il mondo "esterno", e meno male che se si usa lo standard anche IE, quasi sempre, lo capisce Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.