Función e javascript que me arroja lineas vacias

Buenas noches, he estado practicando mi código pero me he encontrado con un problema y no logro detectar el error, ya que al invocar varias funciones me devuelven unos caracteres en una lista ordenada, pero algunas lineas están vacías y no entiendo el por qué.

<!DOCTYPE html>
<html>
<head>
<title>Prueba JavaScript</title>
<script type="text/javascript">
    window.onload = iniciar;

    function iniciar() {
        generarListas("Lista1","uno","dos","tres","cuatro","cinco","seis");
    }

    function generarListas() {
        var s = '<ol>';
        var i;

        for(i=1; i<arguments.length; i++) {
            s = s+"<li>"+arguments[i]+"<li>";
        }

        s = s+"</lo>";

        var elemento1 = document.getElementById(arguments[0]);
        elemento1.innerHTML = s;
    }
</script>
</head>
<body>
<div id="Lista1"></div>
</body>
</html>
0
задан 06.11.2016, 07:23
2 ответа

В момент приложения этикеток li ты не реализуешь cierra этой </li> в конце линии внутри for. изменять это и будет функционировать верно.

s = s+"<li>"+arguments[i]+"</li>";
2
ответ дан 24.11.2019, 12:43
  • 1
    Большое спасибо, не я percat и # 233; этого. –  shadowmors 06.11.2016, 07:30
  • 2
    И завершение < \lo> est и # 225; плохо –  Black Sheep 06.11.2016, 13:44

Проблемы безопасности

Нужно стараться не использовать переменную текста, чтобы вооружать cГіdigo HTML, если контент происходит от текста, который приходит из пользователя. Каждый раз, когда ты использовал innerHTML есть риск

SoluciГіn Альтернатива (без user innerHTML).

function generarListas() {
    var ol = document.createElement('ol');
    var i;

    for(i=1; i<arguments.length; i++) {
        var li = document.createElement('li');
        li.textContent = arguments[i];
        ol.appendChild(li);
    }

    var elemento1 = document.getElementById(arguments[0]);
    elemento1.appendChild(ol);
}

ExplicaciГіn ее soluciГіn

  • document.createElement - та funciГіn, чтобы создавать элементы, в этом случае 'OL' и 'LI'
  • appendChild он та funciГіn, чтобы помещать элементы внутри других
  • textContent - свойство, чтобы помещать текст внутри элемента. Это свойство делает необходимым для того, чтобы все знаки (такой как &, < и >) и акцент был виден хорошо.

возможных Проблем, оно прикреплять HTML

  1. , Что тексты содержали символы, запрещенные внутри HTML такие как &, < и > каждый браузер podrГ, - чтобы показывать их в различной форме
  2. , Что злонамеренный пользователь помещал текст html с algГєn соединение, которое включало бы один <script>, или что-то похожее

Это может происходить так, если текст введен в момент пользователем как будто это ingresГі заблаговременно в формуляре, который потом пошел в базу данных.

AГєn, когда "пока" она funciГіn он не будет использован данными пользователя, dГ - в maГ±ana podrГ-схвати хотеть использовать ее. Лучшее состоит в том, чтобы программировать так, что 0

не прикрепляет HTML с момента
0
ответ дан 24.11.2019, 12:43

Теги

Похожие вопросы