Обновление Javascript HREF - PullRequest
       1

Обновление Javascript HREF

1 голос
/ 30 апреля 2011

У меня есть несколько URL-адресов, которые я посещаю время от времени, с номерами страниц, указанными в HREF. Эти изменения, и мне нужно отслеживать последний посещенный. Я делал это путем вставки в текстовый файл, но хочу заменить это локальной HTML-страницей, которую я могу обновить с помощью javascript. Вот пример, который я создал:

<script type="application/javascript">
      function update(n,newvalue) {
           var link = document.getElementById('l' + n);
           var href = link.getAttribute('href', 2);
           var textfield = document.getElementById('p' + n);
           var parts = new Array();
           parts = href.split('-');
           parts[1] = 'p' + newvalue;
           textfield.setAttribute('value', newvalue);
           var newhref = parts.join('-');
           link.setAttribute('href',newhref);
       }
</script>
<form>
     <dl>
         <dt><a target="_blank" id="l1" href="http://foobar.org/t5-p8-data.html">Task 5 Data<a></dt>
         <dd>Page: <input type="text" id="p1" value="8" onChange="update(1,this.value)" /> </dd>
     </dl>
</form>
    </html>

Когда я ввожу новое значение в текстовое поле и прослеживаю его с помощью Firebug, оно, кажется, работает нормально, т.е. значение ссылки href и значение текстового поля изменяются в DOM, но когда функция завершается, они возвращаются к исходные значения на странице. Что я делаю не так?

1 Ответ

0 голосов
/ 30 апреля 2011

ОСНОВНОЕ РЕДАКТИРОВАНИЕ:

Проблема заключается в том, что нажатие на ввод в одном <input> внутри тега формы отправит форму, поэтому в результате вы вводите ввод, нажимаете ввод, что вызываетЭто означает, что событие onchange запускается, и в отладчике все отображается нормально.Когда это заканчивается, страница перезагружается (так как форма по умолчанию action предназначена для получения текущей страницы) без мерцания, сбрасывая входное значение.

Решение 1. Удалите теги <form>.Элемент формы не делает ничего полезного в этом фрагменте.

Решение 2: Добавьте атрибут onsubmit=return(false) к <form>.

Решение 3: Добавьте еще один не скрытый ввод вформа.

...