XAJAX Expanding List Her Kery
Pregunta
Como verás, soy un novato para todas las cosas de AJAX, pero puedo hacer un poco de PHP y, por lo tanto, me tapé para que XAJAX se ocupe del JavaScript para mí.
Tengo una matriz con artículos enumerados en diferentes secciones. Quiero usar esta matriz para producir una lista desordenada que se expanda cuando alguien hace clic en una sección.
He adaptado un script que encontré aquí:
My Script actualmente parece esto:
<?php
include ("xajax_core/xajax.inc.php");
$subs = array(
"Mortice" => array("Union Deadlock 2.5", "Union Deadlock 3", "Union Sashlock 2.5", "Union Sashlock 3"),
"Cylinders" => array("30/30 Euro", "30/40 Euro", "30/50 Euro", "30/60 Euro"),
"uPVC" => array("30/92 Fullex", "35/92 Fullex", "Sash jammer")
);
function addsub($show, $key)
{
$objResponse=new xajaxResponse();
if ($show=="true") {
$objResponse->assign("list", "style.display", "block");
$objResponse->replace("$key","innerHTML","true","false");
}
else {
$objResponse->assign("list", "style.display", "none");
$objResponse->replace("$key","innerHTML","false","true");
}
return $objResponse;
}
$xajax = new xajax();
$xajax->registerFunction("addsub");
$xajax->processRequest();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php $xajax->printJavascript() ?>
<title>Expand menu test</title>
<style type="text/css">
.list {display: none;}
</style>
</head>
<body>
<?php
echo "<ul>\n";
foreach ($subs as $key => $group) {
echo "<li id=\"".$key."\" onClick=\"xajax_addsub('true','$key');\">".$key."\n";
echo "<ul class=\"list\" id=\"list\">\n";
while (list($list, $each) = each($group)) {
echo "<li id=\"list\">".$each."</li>\n";
}
echo "</ul>\n</li>\n";
}
echo "</ul>";
?>
</body>
</html>
La idea es que cuando se hace clic en el elemento en él, cambia la pantalla del estilo para bloquear (mostrando así el resto de la lista) y configura la función "Falso", por lo que si se hace clic nuevamente, cambiará la pantalla de nuevo a Ninguno. y ocultar la lista.
No hace falta decir que no funciona, así que si alguien pudiera señalarme por qué me agradecería eternamente.
vítores,
Nick.
Resuelto: lo ordené colocando las listas que se mostrarán (u ocultas) en <divs>
y asignándolos cada una identificación única y configurando su estilo como pantalla: ninguna.
Luego, solo tuve que hacer una solicitud para establecer el estilo como bloque cuando se hizo clic en.
gracias.