Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > обновление input из JS


Автор: antondrafff 9.9.2008, 21:14
У меня вопрос к людям знающим JS.
Небольша учебная программа не правильно работает и я не могу понять почему.... Сам недавно стал осваивать JS, поэтому немогу разобраться сам. 
Проблема вот в чем:
На JSP странице небольшая форма, на ней дерево (edTree библиотека). Вначале по умолчанию у дерева есть только рутовый узел. При нажатии на него вызывает простая JS функция, которая AJAX`ом вызывает из другой JSP строку со значениями. У дерева дорисовываются дети рутового объекта. И в конце функции некоторому эллементу <input id="inputId" name="inputName" value=""/> в атрибут value пишется id выбранного узла, тут и кроется основная проблема.... в value прописывается нужное значение, а потом значение по умолчанию. Почему?
Код функции где все падает:
Код

function addNode(nodeid, node, isedit)
{
    var flag = 1;
   //установка флага
    if (flag == 1)
    {
        var url;
       //создание урл
        var mygetrequest = new ajaxRequest();//cоздание AJAX запроса
        mygetrequest.onreadystatechange = function()
        {
            if (mygetrequest.readyState == 4)
            {
                if (mygetrequest.status == 200 || window.location.href.indexOf("http") == -1)
                {
                    var s = new String(mygetrequest.responseText);
                    //работа с результатом
                }
                else
                {
                    alert("An error has occured making the request")
                }
            }
        }
        mygetrequest.open("GET", url, true);
        mygetrequest.send(null);
    }
    var extElem = document.getElementById('ext');
    extElem.value = nodeid;
    alert(document.getElementById('ext').value);
}

В проге на строчках:
var extElem = document.getElementById('ext');
    extElem.value = nodeid;
    alert(document.getElementById('ext').value);
происходит какая то магия - alert() вызывается 2 раза, вместо 1-ого, и вначеле value - какое надо, а потом вновь умолчания

Автор: bars80080 9.9.2008, 23:10
я так понимаю происходит вызов этой функции дважды. случаем не на событие onchange ориентирован её вызов?

Автор: antondrafff 9.9.2008, 23:42
на onclick()
я незнаю откуда происходит второй вызов, если это он(((

поищу... спасиб за подсказку....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)