Можно ли использовать document.writeln (используя Javascript) при попытке создать вложенный список? - PullRequest
0 голосов
/ 10 июля 2011

Можно ли использовать document.writeln при попытке создать вложенный список? Я нахожусь на самом базовом уровне изучения javascript и не знаю, что я делаю неправильно. Мне нужно создать вложенный список, используя document.writeln, который, кажется, работает. Но, когда я пытаюсь проверить это, я получаю кучу ошибок, и это кажется недействительным. Можно ли вообще делать то, что я делаю. Например. У меня в голове (в области скрипта) что-то вроде:

var number1 = {"Name": "Smith", "First Name": "John", "Number": "58"};

и в области скрипта в теле у меня есть:

document.writeln("<ul>");
document.writeln("<li>" + "Individual : ");
document.writeln("<ul>");
for (x in number 1) {
     document.writeln("<li>" + number1[x] + "</li>");}
}
document.writeln("</li></ul></ul>");

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Ну, эта строка неверна:

document.writeln("</li></ul></ul>");

Это должно быть:

document.writeln("</ul></li></ul>");

РЕДАКТИРОВАТЬ: У вас также есть дополнительная закрывающая скобка:

for (x in number 1) {
   document.writeln("<li>" + number1[x] + "</li>");} // Remove the extra } here
}

Итак, используемое мной тестовое содержимое:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
<meta name="description" content="asdf" />
<script type="text/javascript">
var number1 = {"Name": "Smith", "First Name": "John", "Number": "58"};
</script>
</head>
<body>
<h2>asdf</h2>
<script type="text/javascript">
//<![CDATA[
document.write("<ul>");
document.write("<li>" + "Individual : ");
document.write("<ul>");
for (x in number1) {
     document.write("<li>" + number1[x] + "<\/li>");
}
document.write("<\/ul><\/li><\/ul>");
//]]>
</script>
</body>
</html>

Пример теперь проверяется и работает.

0 голосов
/ 10 июля 2011

Пробел между числом и 1 в for (x in number 1) делает этот JavaScript недопустимым.Кроме того, порядок закрывающих элементов неправильный:

document.writeln("</li></ul></ul>");

должно быть

document.writeln("</ul></li></ul>");

Однако не рекомендуется использовать document.writeln в целом, особенно когда ввод(number1 в вашем случае) может зависеть от пользователя.Например, возьмите следующий ввод:

var number1 = {"Name": "Smith<h1>"};

Этот ввод приведет к нарушению макета вашего сайта.Как правило, непосредственный ввод пользовательских данных с помощью document.writeln позволяет пользователям вашего веб-сайта обезвреживать его и захватывать файлы cookie других пользователей, используя уязвимость межсайтового скриптинга .

Вместо использования document.write, используйте DOM и / или jQuery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...