2009-03-30 10 views
0

Ich versuche auf die Eigenschaften der Kontrolle zugreifen und obwohl es funktioniert in IE6, in FF3, schlägt es fehl. Ich tue:Holen Sie sich die Kontrolle Eigenschaften mit Javascript in Firefox

alert(document.getElementById(gridViewCtlId).style.display); 
    alert(document.getElementById(gridViewCtlId).style); 

Und die erste zeigt eine leere Popup während der zweiten zeigen 'undefined'.

ich

alert(document.getElementById(gridViewCtlId).id); 

und ich bekomme die richtige ID der Box zusammen mit:

alert(document.getElementById(gridViewCtlId)); 

und ich bekommen, dass in einer HTML-Tabelle.

Dies funktioniert perfekt in IE aber nicht FF. Was muss ich tun, damit das funktioniert? Vielen Dank.

Edit: gridViewCtlId ist definiert als:

var gridViewCtlId = '<%=GridView.ClientID%>'; 

Hier ist der vollständige Code:

var itemVisible= '<%=ItemVisible.ClientID%>'; 

function onGridViewRowSelected(rowIdx) 
{ 
    alert(document.getElementById(gridViewCtlId).style.display); 
    alert(document.getElementById(gridViewCtlId).style); 
    if (document.getElementById(gridViewCtlId).disabled == false) 
    { 
     alert("hi1"); 
     var selRowCCA = getSelectedRow(rowIdx); 
     if (curSelRow != null) 
     { 
      alert("hi2"); 
      var previousRow = getSelectedRow(previousRowIndx); 

      var CountIdx = previousRowIndx % 2; 
      if (document.getElementById(itemVisible) == null) 
      { 
       if (CountIdx == 0) 
       { 
        alert("hi"); 
        previousRow.style.backgroundColor = 'Silver'; 
       } 
       else 
       { 
        previousRow.style.backgroundColor = 'White'; 
       } 
      } 
     } 

     if (null != selRow) 
     { 
      alert("new"); 
      previousRowIndx = rowIdx; 
      curSelRow = selRow; 
      selRow.style.backgroundColor = 'Red'; 
     } 
    } 
} 

Es ist so ziemlich ein onClick, wo ich diese Funktion aufrufen müssen, um sie zu drehen wieder in seinen ursprünglichen Farbe (mit abwechselnden Farbreihen). IE, das funktioniert gut. Wenn ich die erste Warnung mache

alert(document.getElementById(gridViewCtlId).disabled); 

Ich würde entweder wahr oder falsch bekommen. Der Grund, warum es so ist, ist, weil jemand etwas in eine Textbox eingeben und die erste gridview wird je nachdem, was in diesem textbox ist. Wenn dann jemand in der ersten Gridview etwas auswählt, wird gridview deaktiviert und dann eine Sekunde lang gefüllt. So habe ich ein Problem, das für den gesperrten Teil des gridview überprüft.

+0

Vermissen Sie "" um die Element-ID im Aufruf von getElementById oder ist das ein Tippfehler in den Fragen? – AnthonyWJones

+0

Es ist nicht, es ist woanders definiert durch: var gridViewCtlId = '<% = GridView.ClientID%>'; –

Antwort

0
<div id="test"> 
</div> 
<script type="text/javascript"> 
var gridViewCtlIdCCA = 'test'; 
alert(document.getElementById(gridViewCtlIdCCA).style); 
</script> 

Alerts [object CSSStyleDefintion] in Firefox 2 und 3.

Wenn .style wo nicht definiert, .style.display einen Fehler erzeugen würde, nicht einen leeren Dialog aufmerksam (es sei denn, Sie window.onerror aufnimmst).

Können Sie ein SSCCE erstellen, das das Problem veranschaulicht. Weitere Informationen über SSCCE verfügbar here.

Verwandte Themen