# display block und none (Geht im Firefox aber im IE nicht);



## draig (29. April 2006)

Im Firefox wird bei einer bestimmten Auswahl im DropDownFeld die Table angeziegt bzw. nicht angeziegt. Im IE Funktioniert es gar nicht. Es passiert einfach nichts. Ich mache nicht sehr oft was mit Javascript, also weiß ich net ob man den quellcode besser machen kann.

meine Funktionen:

```
<script>
function toggle_none(id)

{
document.getElementById(id).style.display = 'none';
}

function toggle_block(id)

{
document.getElementById(id).style.display = 'block';
}
</script>
```

Aufruf der Funktionen:

```
<option <? if ($id_display_children_children=="1" || $id_display_children=="1") { ?>onclick="javascript:toggle_none('menu')" <? } elseif ($id_display_children_children=="2" || $id_display_children=="2") { ?>onclick="javascript:toggle_block('menu')" <? } ?> value="<? if (!$id_children_children) { echo $id_children; } else { echo $id_children_children; } ?>"><? echo $title_parent; ?> --> <? echo $title_children; ?><? if ($id_children_children) {?> --> <? echo $title_children_children; ?><? } ?></option>
```

Verstecken/anzeigen der Table:

```
<table id="menu" style="border-collapse:collapse;" cellspacing="0" width="100%">
    <tr >
    
        <td  width="20%" bgcolor="white" height="8" style="border-bottom-width:1px; border-bottom-color:rgb(255,153,0); border-bottom-style:dashed;">
                <font size="1" face="Verdana">Homebrew: 
	 <br></font>
    </td>

        <td  width="782" bgcolor="white" height="8" style="border-bottom-width:1px; border-bottom-color:rgb(255,153,0); border-bottom-style:dashed;">
               <font size="1" face="Verdana"><select name="homebrew_select" size="1" style="font-family:Verdana; font-size:10px;">
	 
	 <?

$mysql_object = new mysql_db();

$results = $mysql_object->mysql_db_query("SELECT id_homebrew,title FROM psp_homebrew ORDER BY title ASC");

while ($resultset = mysql_fetch_object($results)) {

$id_homebrew = $resultset->id_homebrew;
$title_homebrew = $resultset->title;
?>
	 
        <option value="<? echo $id_homebrew; ?>"><? echo $title_homebrew; ?></option>
<?
}
?>
        </select><br></font>
    </td>
    </tr>
    </table>
```


----------



## Gumbo (29. April 2006)

Probier mal Folgendes:
	
	
	



```
function toggle_block(id)
{
	document.getElementById(id).style.display = "";
}
```
Alternativ könntest du auch die Elemente auch Klassen zuweisen und diese über CSS normal formatieren.


----------



## draig (29. April 2006)

Nein Funktioniert leider auch nicht. Ich habe gerade auch nochmal eine andere Funktion eingestezt, die im IE funktioniert, aber nicht wenn cih es dort einsetze.

Quellcode:

```
var tr = document.getElementById(id);

	if (tr==null) { return; }

	var bExpand = tr.style.display == '';

	tr.style.display = (bExpand ? 'none' : '');
```


----------



## draig (29. April 2006)

Nun hab ich den Fehler weiter eingeschränkt. Wenn ich das onclick auf einen normalen Text setze, macht er alles auch im IE. Also liegt es daran, das der IE es nicht in der DropdownBox erkennt. Weiß einer Hilfe?


----------



## Sven Mintel (29. April 2006)

Der IE erkennt kein onclick in <option>.

Verwende stattdessen onchange im <select>.
wie genau du je nach ausgewählter Option verfahren musst, musst du selbst sehen, denn mit Verlaub.... solche Gebilde...

```
<option <? if ($id_display_children_children=="1" || $id_display_children=="1") { ?>onclick="javascript:toggle_none('menu')" <? } elseif ($id_display_children_children=="2" || $id_display_children=="2") { ?>onclick="javascript:toggle_block('menu')" <? } ?> value="<? if (!$id_children_children) { echo $id_children; } else { echo $id_children_children; } ?>"><? echo $title_parent; ?> --> <? echo $title_children; ?><? if ($id_children_children) {?> --> <? echo $title_children_children; ?><? } ?></option>
```
.....du erwartest hoffentlich nicht, dass jemand versucht, sich das durchzulesen...oder?


----------



## draig (29. April 2006)

Hm dann hab ich nen prob. Vielleicht kann mir Jemand sagen, wie ich es lösen kann. Die DorpdownListe wird durch eine Abfrage aus einer DB erstellt.Bei der Abfrage gibt es ein Feld, wo jeweils 1 oder 2 eingetragen ist. Wenn jetzt bei eine Option ausgewählt wurde, wo in diesen einem Feld 1 steht soll die funktion toggle_none aufgerufen werden. Wenn eine Option ausgewählt wurde, wo das Feld in der DB 2 enthält, soll die Funktion toggle_block ausgeführt werden. Wie mache ich dies am betsen?


----------



## Sven Mintel (29. April 2006)

Da du den value ja für was anderes brauchst, könntest du den Klassennamen missbrauchen.
Wähle ihn entsprechend der Funktion, die aufgerufen werden soll...dann brauchst du nur noch den Klassennamen der gewählten Option ermitteln und kannst die Funktion per eval() aufrufen.


----------

