Javascript: неожиданный токен НЕЗАКОННАЯ ошибка с appendChild () - PullRequest
2 голосов
/ 17 сентября 2011

Я новичок в javascript, но получаю сообщение об ошибке «Неожиданный токен НЕЗАКОНЕН» с этой строкой кода:

switch (city) {
    case "london":
        var newdiv = document.createElement('<div id="london" class="option-area"><label class="city">From London to…?</label>
                <select class="city">
                    <option></option>
                    <option>1</option>
                    <option>2</option>
                    <option>3</option>
                </select><br /></div>');

        document.all.bookingform.appendChild(newdiv);
        break;
}

Вероятно, это очень глупая ошибка, но я часами пытался заставить этот блок работать. Пожалуйста, помогите!

Ответы [ 2 ]

5 голосов
/ 17 сентября 2011

В вашем коде есть пара ошибок:

1) Функция document.createElement() принимает один аргумент в качестве имени элемента, а не фрагмент HTML / XML для анализа и построения дерева DOM. Однако вы должны достичь своей цели, создав анонимный элемент-обертку и установив его внутренний HTML, а затем добавив первого дочернего элемента к целевому элементу, например:

var wrapperDiv = document.createElement("div");
wrapperDiv.innerHTML = '<div id="london" class="option-area"><label...';
document.all.bookingform.appendChild(wrapperDiv.firstChild);

2) Строки не могут занимать несколько строк, но вы можете построить многострочную строку следующим образом:

* * 1010

Если вы действительно хотите, чтобы в строке были новые строки, вы можете использовать escape-последовательность новой строки (\n) в строковом литерале, например 'Hello\nnewline!'.

[Изменить]

Конечно, если вы просто пытаетесь добавить HTML к элементу, уже находящемуся в теле документа, вы делаете это:

var mydiv = document.getElementById('mydiv');
if (mydiv) {
  mydiv.innerHTML += '<div class="newdiv">' +
                     ' New child will be appended...' +
                     '</div>';
}

Обратите внимание, что в различных браузерах есть причуды при изменении форм, таких как выше; рассмотрите возможность использования библиотеки JavaScript, такой как jQuery, ExtJS или Prototype.js.

2 голосов
/ 17 сентября 2011

document.createElement используется для создания одного элемента - например, document.createElement('div'), поэтому передача HTML запрещенаВы можете создать элемент, а затем изменить HTML для него с помощью ref_to_the_div.innerHTML = "<some html="goes here" />"

...