Вызов функции PHP дважды, работает только один раз - PullRequest
1 голос
/ 17 июня 2011

Я пытаюсь использовать ассоциативные массивы PHP для вывода различных значений текста и изображений в HTML для разных экземпляров слайд-шоу jQuery на одной странице.Вот код HTML:

<div class='slide'>
    <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
        <div class='text'><p>This is the text!</p></div>
            </div>
        <div class='mosaic-image'><img src='imgs/the-img.png'/></div>
    </div> <!-- mosaic-block fade -->
</div> <!-- .slide --> ` 

Я написал массивы для каждого типа слайд-шоу, содержащие текст и изображение для каждого слайда, вот пример:

$my_content = array( 
        'image1.png' => 'image1 text!',
        'image2.png' => 'image2 text!'
        );

Затем я написал функцию с параметрамидля категории слайд-шоу и содержания:

function gallery_content($content) {
    foreach ( $content as $img => $txt ) {
    echo "<div class='slide'>
        <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
            <div class='text'><p>".$txt."</p></div></div>
            <div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
        </div> <!-- mosaic-block fade -->
        </div> <!-- .slide --> ";
}

Я называю это так: gallery_content($my_content);, и это работает очень хорошо.Но когда я пытаюсь вызвать его снова для другого набора значений, кажется, что работает только первый экземпляр.Я пытался использовать массив непосредственно вместо переменной в качестве параметра И сделать отдельную функцию для каждого слайд-шоу, но продолжал получать одинаковые результаты.

Почему функция не может быть вызвана более одного раза?Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Я думаю, что PHP делает свою работу.Проверьте источник выводимого документа, и вы должны увидеть правильное количество галерей).Я подозреваю, что правило CSS для класса gallery, например, такого, которое позиционирует его абсолютно, вызывает видимость только одной галереи.Если вы в порядке с использованием встроенного CSS (что обычно неприемлемо), вы можете сделать так, чтобы PHP добавил пользовательское значение позиции (например, top) на основе номера галереи:

function gallery_content($content) {
    $num = 0;
    foreach ( $content as $img => $txt ) {
    echo "<div class='slide' style='top: ".(100 + 50*$num)."px'>
        <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
            <div class='text'><p>".$txt."</p></div></div>
            <div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
        </div> <!-- mosaic-block fade -->
        </div> <!-- .slide --> ";
}

В приведенном выше примерепервый элемент галереи - вершина размером 100px (100 + 50 * 0), второй элемент - вершина размером 150px, третья точка - 200px и т. д.Вы также можете использовать некоторые CSS3 и новую функцию calc() вместо этого, но селекторы CSS3 являются экспериментальными и не поддерживаются в некоторых старых браузерах.Лучше всего использовать PHP и встроенные стили.

0 голосов
/ 17 июня 2011

См. Исходный код, сгенерированный на вашей последней странице (HTML), чтобы определить, сработал ли PHP или нет.я думаю, что ваши результирующие "galaries" (DIV) могут иметь тот же идентификатор или другие атрибуты, благодаря которым jQuery активирует их, и поэтому только один из них запускается правильно (первый), а второй не запускается.

Надеюсь, это поможет.

...