Вопрос

Как вы увидите, я новичок во всех этих штуках с ajax, но я немного разбираюсь в php, и поэтому я попросил xajax позаботиться о javascript за меня.

У меня есть массив с элементами, перечисленными в другом разделе.Я хочу использовать этот массив для создания неупорядоченного списка, который расширяется, когда кто-то нажимает на раздел.

Я адаптировал сценарий, который нашел здесь:

Скользящая вытяжка

Мой сценарий в настоящее время выглядит следующим образом:

<?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>

Идея заключается в том, что при нажатии на элемент он изменяет стиль отображения на block (таким образом, отображая остальную часть списка) и устанавливает для функции значение 'false', поэтому, если щелкнуть по нему снова, он изменит отображение обратно на none и скроет список.

Излишне говорить, что это не работает, поэтому, если бы кто-нибудь мог указать мне, почему, я был бы бесконечно благодарен.

Овации,

Ник.

Решено - я отсортировал его, поместив списки, которые будут показаны (или скрыты), в <divs> и присвоив каждому из них уникальный идентификатор и установив их стиль отображения:никто.Затем мне просто нужно было сделать запрос, чтобы установить стиль как блок при нажатии на него.

Спасибо.

Это было полезно?

Решение

Я думаю, вам следует разобраться в jQuery - запрос как ваша библиотека javascript по умолчанию, она используется многими веб-профессионалами и очень хороша.Там вы найдете Аккордеон контроль, который, я думаю, очень хорошо удовлетворит эту потребность.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top