#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Я пытаюсь заменить <li>
на 1. 2. 3. соответственно. Мне удалось изменить значение <li>
на число, но это число 0
. Цикл не хочет работать. Честно говоря, этот метод может оказаться невозможным.
Взгляните на скрипку, если хотите.
Это мой function(){...}
:
function doIt(){
var input = document.getElementById("input");
var li = /<li>/; // match opening li
var liB = /</li>/; // match closing li
var numberOfItems = input.value.match(li).length; // number of lis that occur
for(var i = 0; i < numberOfItems; i ) {
insertNumber(i); // execute insertNumber function w/ parameter of incremented i
}
function insertNumber(number){
input.value = input.value.replace(li, number "." " ").replace(liB, "");
}
}
Я понимаю insertNumber(){...}
, что функция не нужна.
Комментарии:
1.
numberOfItems
не определено.2. В вашем первом цикле вы заменяете ВСЕ
<li>
s (на 0)… в вашем 2-м не осталось ничего для замены. Возможно, удалитеgi
из вашего регулярного выражения.3. Как сказал @christian314159, после первой итерации
<li>
в тексте больше ничего нет. Какой-нибудь отладочный код откроет вам это. И, пожалуйста, укажите полный пример кода в вопросе вместо простой ссылки.4. Рассмотрим такой подход. Это немного проще.
5.
.replace()
Метод специально допускает функцию в качестве второго аргумента. Его возвращаемое значение становится заменой.
Ответ №1:
Вот альтернативный метод, превращающий содержимое вашей текстовой области HTML в элементы DOM, которыми jQuery может манипулировать, и таким образом управлять ими:
function doIt() {
var $domElements = $.parseHTML( $('#input').val().trim() ),
output = [],
i = 1;
$.each($domElements, function(index, element) {
if($(this).text().trim() != '') {
output.push( i '. ' $(this).text().trim() );
i ;
}
});
$('#input').val(output.join('n'));
}
Комментарии:
1. Кстати, вы также можете сделать
output.push(i '....')
и удалить лишнюю строку, но это забавно сложно читать2. Это работает, спасибо! Я действительно ценю помощь, и я обязательно вернусь к этому позже. Я хочу использовать необработанный подход JavaScript, потому что я чувствую, что должен иметь полное представление о языке, прежде чем погружаться в его библиотеку. Я собираюсь использовать метод @cookiemonster.