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í:

dibujar deslizante

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.

¿Fue útil?

Solución

Creo que deberías buscar en jquery como su biblioteca predeterminada de Javascript, es usado por muchos profesionales web y es muy bueno.Allí encontrará el acordeón control, que creo que suitará esta necesidad muy bien.

buena suerte!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top