Функция jQuery — установка строкового параметра

#javascript #jquery

#javascript #jquery

Вопрос:

Я создаю веб-страницу и хочу выдавать предупреждение всякий раз, когда я нажимал на строку сгенерированной таблицы, которая генерируется приведенным ниже кодом. Для того, чтобы сделать это, я использую функцию setAlert (сообщение). Моя проблема в том, что это работает только тогда, когда параметр, установленный для функции, является целым числом. это не работает, когда это строка. Помогите мне решить эту проблему.

Спасибо.

 function getItemList(){
        $('#tableItem').empty();
        $.ajax({
                url: 'ItemServlet',  
                data:{version:2},
                type: 'post',
                dataType: 'json',
                success: function (data) {
                    $('#tableItem').append('<table class="table table-striped table-hover" id="table1">n
                        <thead><tr><th class="table-text-align-centre" style="width:10%">Item Code</th>n
                                    <th class="table-text-align-centre" style="width:20%">Name</th>n
                                    <th class="table-text-align-centre" style="width:50%">Description</th>n
                                    <th class="table-text-align-centre" style="width:10%">Stock Count</th>n
                                    <th class="table-text-align-centre" style="width:10%">Active</th></tr></thead><tbody class="table-hover"></tbody></table>');
                    var length = data.length;
                    for (i = 0; i < length; i  ) {
                        var post = data[i];
                        $('#table1').append('<tr onClick="setAlert(' post['itm_code'] ')"><td>'   post['it_name']   '</td>n
                        <td class="table-text-align-centre">'   post['itm_name']   '</td>n
                        <td class="table-text-align-centre">'   post['itm_description']   '</td> n
                        <td class="table-text-align-centre">'   post['itm_stockcount']   '</td> n
                        <td class="table-text-align-centre">'   post['active']   '</td> n
                        </tr>');
                    }
                }
            });
    }



    function setAlert(message) {
        var id = message  "";
        alert(id);
    }
  

Комментарии:

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

2. теперь операция за несколько дней похожа. можете ли вы исправить этот код, не сообщая об ошибке. заранее спасибо за помощь.

Ответ №1:

Проблема здесь в том, что вы передаете свои параметры в setAlert функцию без определения кавычек. Теперь, поскольку вы используете « для определения вашего onClick и вашего использования « для формулировки вашего html, вам нужно использовать апостроф, экранированный для передачи параметра.

Итак, в настоящее время, если post['itm_code'] равно 1, он сгенерирует следующий HTML-код с допустимым javascript:

 <tr onClick="setAlert(1)"><td>
  

Однако, если post['itm_code'] это строка «моя строка», она отобразит следующий html с недопустимым javascript:

 <tr onClick="setAlert(my string)"><td>
  

Итак, следующая строка:

 <tr onClick="setAlert(' post['itm_code'] ')"><td>
  

следует изменить на:

 <tr onClick="setAlert('' post['itm_code'] '')"><td>