функция showhide в динамически создаваемой форме не работает

0

Я разрабатываю веб-страницу с формой, которая создается динамически с помощью javascript (jquery). Для каждого (повторяющегося) набора элементов формы добавлена функция Show/hide, чтобы показать и скрыть элементы, и я не получаю этот рабочий код show/hide. Я подозреваю, что ошибка указана в коде ниже, и я думаю Я изо всех сил стараюсь поставить кавычки в нужное место (?) Консоль указывает на ошибку "Uncaught SyntaxError: Неожиданный токен", который я не понимаю; при исключении предполагаемой ошибочной строки ошибок больше нет, и я не вижу, где это '}' появляется там, где он не должен появляться.

Код Javascript:

function ShowHide(id) {
    $(id).toggle();
}


$(document).ready(function () {

    var buildform = function () {
        var form ='<div id="form">'

        for (var i = 0; i < 2; i++) {

            form += '<div id="filename"' + i + '> Document  </div> </td>';
            //error in next line (?)
            form += '<button onclick="ShowHide(\'#filename'+ i +'\')">  Show/hide document </button> </td> </tr>';

        } //for i
        form += '</div>'; //id="form"
        console.log('FORM: '+form);
        return
    } //buildform()

   $("#wrapper").append(form);

}); //$(document).

Код HTML:

<div id="wrapper"></div>

Вывод javaconsole():

<div id="form"><div id="filename"0> Document  </div><button onclick="ShowHide('#filename0')">  Show/hide document </button></div><div id="filename"1> Document  </div><button onclick="ShowHide('#filename1')">  Show/hide document </button></div> 
  • 0
    Я замечаю проблемы, которые у вас все еще есть в комментариях, и обновил мой ответ. Дайте мне знать, если у вас все еще есть проблемы.
  • 0
    Я просто обновил код выше и выявил проблему в выходных данных; Как можно видеть, div id «filename» не был правильно отформатирован. После исправления это сработало. Спасибо за вашу помощь.
Показать ещё 1 комментарий
Теги:

2 ответа

0
Лучший ответ

Вы котировки ошибочны.

  form += '<td> <button onclick="ShowHide(\'#filename'+ i +  '\')">  Show/hide document </button> </td> </tr>';

Я сопоставил цитаты в скобках и избежал их с помощью \. Кроме того, вы сохраняете созданный html, но нигде не показываете, что он действительно выводит html на страницу. Вы должны фактически выводить созданную информацию. Например:

HTML:

<div ="outputContainer"></div>

Внутри вашей функции:

$("#outputContainer").html(form);
  • 0
    Thnx. Я добавляю созданную форму к элементу div
  • 0
    Это выводит правильно сейчас?
0

Исключить кавычки

Пожалуйста, измените строку:

form += '<td> <button onclick="ShowHide("#filename'+ i +')">  Show/hide document </button> </td> </tr>';

к этому:

form += '<td> <button onclick="ShowHide(\'#filename'+ i +'\')">  Show/hide document </button> </td> </tr>';
                                        ^                 ^
  • 0
    спасибо оба; с вашим решением ошибка, показанная консолью, исчезла. Однако функция ShowHide все еще не работает; Я проверил, что функция вызывается при нажатии кнопки (ей)
  • 0
    @ user2543182 Можете ли вы показать нам вывод HTML?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню