Не могу вызвать обновление только одной части JavaScript - PullRequest
1 голос
/ 23 декабря 2011

Другие ответы на этот вопрос касаются времени, тогда как с этой проблемой связано обновление части javascript внутри оператора if.

После загрузки HTML-страницы виден один элемент select. В зависимости от того, какая опция выбрана, появится другой набор полей ввода.

Моя первоначальная проблема заключалась в том, что когда пользователь нажимает кнопку, функция, которую я сделал 'Submit ()', перерисовывает те же поля ввода поверх старых, что вызывает беспорядок. Вы видите, что одни и те же поля ввода рисуются столько раз, сколько пользователь нажимает «отправить».

Я добавил функцию checkBool (), чтобы проверить, была ли нарисована форма или нет. Если это так, то он вызовет функцию window.location.reload (). если нет, он просто вызовет мою функцию Submit ().

Код больше не будет накапливать поля ввода. Вместо этого, когда я нажимаю кнопку «Отправить» во второй раз, нарисованные формы исчезают, даже если выбран другой вариант.

То, что я хочу сделать, - это когда пользователь выбирает другую опцию и нажимает кнопку «Отправить», текущая форма удаляется и автоматически создается новый набор форм.

Вот моя функция checkBool ():

var boolean = new Boolean();
function checkBool(){

    if(boolean==false){
        Submit();
    }else if(boolean==true){
        window.location.reload();
        boolean=0;
        Submit();
        return boolean;
    }
}

Похоже, что функция window.location.reload () немедленно перезагружает скрипт, и браузер никогда не выполняет функцию Submit ().

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Мой выбор - рисовать разные формы для разных элементов div, при этом изначально ни одна из них не показана. Событие onchange поля выбора или кнопки отправки циклически переключается между этими элементами, устанавливая .style.visibility = 'hidden' или 'visible' в зависимости от того, является ли это запрошенной формой.

Это также имеет преимущество в удобстве использования: если пользователь передумает после того, как начнет заполнять форму, позже вернет свое мнение, его данные все равно будут там.

0 голосов
/ 26 декабря 2011

Я нашел ответ на свой вопрос.

Вместо обновления javascript я могу удалить все элементы вместе.Это то, что я пытался сделать, найдя способ «обновить» страницу.

Вместо того, чтобы скрывать элементы и оставлять огромный пробел в разных местах, я могу стратегически поместить элементы в элементы div и использовать removeChild() функция.

Вот пример того, как это работает ...

Это мой HTML:

<button type="button" onclick="draw()">Draw</button>
<button type="button" onclick="erase()">Erase</button>
<div id="parent">

</div>

Вот мой JavaScript:

    function draw(){
     `docume`nt.getElementById("test").innerHTML=InputField("parent","child","text",5,10).value;
}

function erase(){
    var parent =document.getElementById("parent");
    var child = document.getElementById("child");
    parent.removeChild(child);


}

Итак, что здесь происходит, когда пользователь нажимает кнопку «нарисовать», вызывается функция draw ().Эта функция создает поле ввода.

Я создал свою собственную функцию, которая будет рисовать поле ввода с переменной, которую я ему передал.В этом суть функции InputField ().

После этого пользователь нажимает кнопку «erase» для вызова функции стирания.

Функция erase захватывает родительский элемент с именем «parent»и дочерний элемент (который в данном случае называется 'child' - вы можете видеть, что я передал имя 'child' в мою функцию InputField ())

Затем удалите дочерний элемент с помощью remove.Child (child) часть кода.

Если вы загрузите jquery на свою веб-страницу, вы можете использовать функцию removeDiv (), чтобы сделать то же самое.

...