La verdad es que te has explicado muy bien
Computer XTress, se entiende tu problema perfectamente. Otra cosa que es de agradecer es que no se vea código PHP, sólo su generación
.
Lo que yo haría en tu caso: Ya que la generación es en PHP, lo lógico es que almacenes en un array todos los ID's generados. Es decir, si has generado como en tu ejemplo:
Código PHP:
<ul>
<li id="item_1">Autos</li>
<li id="item_1_data">
Ford - Chevrolette - Ferrari
</li>
<li id="item_2">Verduras</li>
<li id="item_2_data">
Papa - Zanahoria - Tomate
</li>
</ul>
Deberías generar también un array en PHP (o en javascript, eso como quieras, las dos formas serán posibles) con los ids de tus elementos, o al menos su cardinalidad. Es decir, deberíamos tener al final de la generación:
Código PHP:
var misIDS = ["item_1", "item_2"];
// ó si no en PHP
$misIDS = ["item_1", "item_2"];
// ó si no
var numero_items_max = 2;
// ó su variante PHP
$numero_items_max = 2;
Después ya nos encargaríamos de hacer las correspondientes llamadas:
Código PHP:
addListener(document.getElementById(elID), "click", switchDisplay );
// ó
addListener(document.getElementById("item_XX"), "click", switchDisplay );
Hagas lo que hagas tienes que tener en cuenta que switchDisplay será un manejador de eventos, y que el único parámetro que aceptará es el de evento (
e, o como quieras llamarlo) para navegadores como Firefox.
Luego, en switchDisplay, en vez de tu parámetro, el objeto con el que deberemos jugar será
this, lanzador y receptor de todo el evento
onclick. Y si necesitas el elemento con id
item_2_data por ejemplo, es lógico que el
this en ese momento referencie a
item_2, luego
this.id será
"item_2", y
this.id+"_data" será la cadena
item_2_data.
Espero que me hayas entendido.
Un saludo.