2

我是 javascript 的新手,但使用这行代码时出现“Unexpected Token ILLEGAL”错误:

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;
}

这可能是一个非常愚蠢的错误,但我已经尝试了几个小时来让这个块工作。请帮忙!

4

2 回答 2

5

There are a couple errors in your code:

1) The document.createElement() function takes a single argument as the element name, not an HTML/XML snippet to parse and build a DOM tree. However you chould achieve your goal by building an anonymous wrapper element and setting its inner HTML, then appending its first child to the target element, for example:

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

2) Strings cannot span multiple lines but you can build a multiline string like this:

var str = '<div id="london" class="option-area">' +
          '  <label class="city">From London to…?</label>' +
          '  <select class="city">' + // ...
          '</div>';

If you actually want newlines in the string you can use the newline escape sequence (\n) in a string literal, like 'Hello\nnewline!'.

[Edit]

Of course, if you're just trying to append HTML to an element already in the document body you do this:

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

Note however that there are quirks in various browsers when modifying forms such as above; consider using a JavaScript library such as jQuery, ExtJS, or Prototype.js.

于 2011-09-17T19:22:00.573 回答
2

document.createElement is used to create one element - like document.createElement('div'), so passing HTML is not allowed. You could create the element, then change the HTML for it later with ref_to_the_div.innerHTML = "<some html="goes here" />"

于 2011-09-17T19:20:39.360 回答