Vai al contenuto

Compatibilità javascript


montiv49

Messaggi raccomandati

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

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

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

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

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...