@T_verdisla_V
Начинающий

Почему не работает js?

Здравствуйте, есть вот такой html с шаблонизатором смарти
<h2>Ваши заказы</h2>
        {if ! $rsUserOrders}
            <h2>У вас нет ни одного заказа</h2>
        {else}
            <table border="1" cellpadding="1" cellspacing="1">
                <tr>
                    <th>№</th>
                    <th>Действие</th>
                    <th>ID заказа</th>
                    <th>Статус</th>
                    <th>Дата создания</th>
                    <th>Дата оплаты</th>
                    <th>Дополнительная информация</th>
                </tr>
                {foreach $rsUserOrders as $item name = orders}
                    <tr>
                        <td>{$smarty.foreach.orders.iteration}</td>
                        <td><a href="#" onclick="showProducts({$item['id']}); return false;">Показать товар заказа</a></td>
                        <td>{$item['id']}</td>
                        <td>{$item['status']}</td>
                        <td>{$item['date_created']}</td>
                        <td>{$item['date_payment']}</td>
                        <td>{$item['comment']}</td>
                    </tr>
                    
                    <tr class="hideme" id="purchasesForOrderId_{$item['id']}">
                        <td colspan="7">
                            {if $item['children']}
                                <table border="1" cellpadding="1" cellspacing="1" width="100%">
                                    <tr>
                                        <th>№</th>
                                        <th>ID</th>
                                        <th>Название</th>
                                        <th>Цена</th>
                                        <th>Количество</th>
                                    </tr>
                                    {foreach $item['children'] as $itemChild name = products}
                                        <tr>
                                            <td>{$smarty.foreach.products.iteration}</td>
                                            <td>{$itemChild['product_id']}</td>
                                            <td><a href="/product/{$itemChild['product_id']}/">{$itemChild['name']}</a></td>
                                            <td>{$itemChild['price']}</td>
                                            <td>{$itemChild['amount']}</td>
                                        </tr>
                                    {/foreach}
                                </table>
                            {/if}
                        </td>
                    </tr>
                {/foreach}
            </table>
        {/if}

Кликая по ссылке должен отработать js и появиться подтаблица, но этого не происходит, подскажите в чем причина.
function showProducts(id){
    var objName = "#purchaseForOrderId_" + id;
    if($(objName).css('display') !== 'table-row'){
        $(objName).show();
    } else {
        $(objName).hide();
    }
}
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@Arik
1. Выборка jQuery идет по id "purchaseForOrderId_ИД", а блоки у вас id "purchasesForOrderId_ИД".
2. Запуск идет функции по клику, дальше выборка идет через jQuery, который еще мог не загрузиться, надо обернуть:
$(function() {
// code
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы