Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.09.2012, 01:12
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

Не работает кнопка
Функция vvod_elementov(N) описывает кнопку 'Определить значение функции в узле'. При нажатии на эту кнопку вызывается функция Proverka() , которая выводит диалоговое окно с надписью "proverka".

Не работает кнопка, не могу понять в чем дело. Подскажите пожалуйста
Вот код скрипта:

function vvod_elementov(N)
{
var N=N.value;



for (var i=0; i<N; i++)
{

document.write(" Введите х");
document.write(i);
document.write("=");
document.write("<input name=xi >" );

document.write(" <br>");
document.write(" <br>");

document.write("<input type=button value='Определить значение функции в узле' onClick='Proverka()' >" );
document.write(" <br>");
document.write("<br>");
}


}


function Proverka() {
alert("proverka");

}
Ответить с цитированием
  #2 (permalink)  
Старый 10.09.2012, 01:16
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Женя150, document.write полностью переписывает HTML-страницу, если та уже загружена...
document.write
Ответить с цитированием
  #3 (permalink)  
Старый 10.09.2012, 01:19
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

а как сделать, чтобы заработала?
Ответить с цитированием
  #4 (permalink)  
Старый 10.09.2012, 01:27
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Женя150, а что именно вы хотите сделать?
<html>
<head>
<script>
function vvod_elementov(N)
{
var N=N.value, div = document.getElementById("div");
div.innerHTML = "";


for (var i=0; i<N; i++)
{
div.innerHTML += " Введите х"+i+"=<input name=xi><br><br>";
div.innerHTML += "<input type=button value='Определить значение функции в узле' onClick='Proverka()'><br><br>";
}
}
</script>
</head>
<body>
<div id="div"></div>
<input type="text" id="el" value="2"><input type="button" value="Click" onClick="vvod_elementov(document.getElementById('el'))">
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 10.09.2012, 11:00
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

Вообще, я хочу, чтобы при нажатии на кнопку проводились вычисления и результат показывался на экране)
чтобы было f(x0)=
f(x1)=
f(x2)=
и т.д


xi-Math.sin(xi)-0.25 - это функция, значение которой нужно просчитать в каждом узле

<html>
<head>
<script>
function vvod_elementov(N)
{
var N=N.value, div = document.getElementById("div");
div.innerHTML = "";


for (var i=0; i<N; i++)
{
div.innerHTML += " Введите х"+i+"=<input name=xi><br><br>";
div.innerHTML += "<input type=button value='Определить значение функции в узле' onClick='Proverka()'><br><br>";
}
}

function Proverka()
{


for (var i=0; i<N; i++)
{
div.innerHTML += " f(х"+i+")="+xi-Math.sin(xi)-0.25;

}


}
</script>
</head>
<body>
<div id="div"></div>
<input type="text" id="el" value="2"><input type="button" value="Click" onClick="vvod_elementov(document.getElementById('e l'))">
</body>
</html>


Поможете?)
Ответить с цитированием
  #6 (permalink)  
Старый 10.09.2012, 14:54
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Женя150,
<html>
<head>
<script>
function vvod_elementov(N) {
    var N = N.value, div = document.getElementById("el_len"), span, input, but, sub;
    if (!parseInt(N, 10)) { return alert("Введенное значение не является числом!"); }
    else { N = parseInt(N, 10); }
    div.innerHTML = "";

    for (i=0; i < N; i++) {
        span = document.createElement("span");
        input = document.createElement("input");
        input.setAttribute("type", "text");
        input.setAttribute("name", "x"+i);
        but = document.createElement("input");
        but.setAttribute("type", "button");
        but.setAttribute("value", "Определить значение функции в узле");
		but.onclick = (function(i) { return function() { Proverka(this.parentNode, i); } })(i);
		sub = document.createElement("sub");
		sub.appendChild(document.createTextNode(i));
        span.appendChild(document.createTextNode("Введите x"));
		span.appendChild(sub);
        span.appendChild(input);
        span.appendChild(document.createElement("br"));
		span.appendChild(document.createElement("br"));
        span.appendChild(but);
        span.appendChild(document.createElement("br"));
		span.appendChild(document.createElement("br"));
        div.appendChild(span);
    }
}

function Proverka(el, i) {
    var div = document.getElementById("res"), sub;
	if (!parseInt(el.children[1].value)) { return alert("Введенное значение не является числом!"); }
	else { var sin = parseInt(el.children[1].value)-Math.sin(parseInt(el.children[1].value))-0.25;
	/*
	если нужно в градусах то пишем
	var sin = (parseInt(el.children[1].value) * Math.PI / 180)-Math.sin(parseInt(el.children[1].value) * Math.PI / 180)-0.25;
	*/
	}
    div.innerHTML = "";
    sub = document.createElement("sub");
    sub.innerHTML = i;
    div.appendChild(document.createTextNode(" f(x"));
	div.appendChild(sub);
	div.appendChild(document.createTextNode(") = "));
	div.appendChild(document.createTextNode(sin));
}
</script>
</head>
<body>
<input type="text" id="el" value="2"><input type="button" value="Click" onClick="vvod_elementov(document.getElementById('el'))">
<div id="el_len"></div>
<div id="res"></div>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 10.09.2012, 17:56
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

круто!!!!!!!!!!!!!! спасибо огромное!!!!

а как зафиксировать на экране значение? ну чтобы не пропадало f(x0) при вычислении f(x1) ?
Ответить с цитированием
  #8 (permalink)  
Старый 10.09.2012, 23:23
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Женя150, закоментируйте строку 42
//div.innerHTML = "";
Ответить с цитированием
  #9 (permalink)  
Старый 11.09.2012, 23:49
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

Ура, работает как надо! Огромное спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 17.09.2012, 14:58
Интересующийся
Отправить личное сообщение для Женя150 Посмотреть профиль Найти все сообщения от Женя150
 
Регистрация: 10.09.2012
Сообщений: 24

Код работает, мне все нравится, только я хотела бы разъяснить некоторые моменты:

1) input = document.createElement("input"); - это создается класс input, в котором создается новый элемент input

input.setAttribute("type", "text"); - в классе input вызывается метод, устанавливающий значение атрибута и значение text

я правильно понимаю?

2) sub.appendChild(document.createTextNode(i)); - в класс sub добавляется новый элемент к детям существующего элемента

существующий элемент это sub? А "дети" в данном примере это что?

3) document.createTextNode(i) - создается текст "i"

в 44 строке : sub.innerHTML = i; - присваивает HTML i

в чем разница? в том, что в createTextNode текста в принципе до этого не существовало и его создают в первый раз, а innerHTML присваивается уже существующий?

4) строка 18:

в классе but вызывается метод Onclick, к которому привязана функция (i), которая возвращает функцию Proverka?

не очень понятно про функцию (i)

Proverka(this.parentNode, i) -что такое parentNode?


but.onclick = (function(i) { return function() { Proverka(this.parentNode, i); } })(i);

интересует вот это (i) в конце.
Получается, что структура вызова выглядит так:
onclick=(...)(i) ?


5) поясните пожалуйста строку 35.

el.children[1]
-то, что в квадратных скобках, это же ,буква "l"?
и почему скобки квадратные? это массив?

6) почему-то при вводе в качестве значения узла "0" выдается сообщение, что "Введенное значение не является числом".
Ноль-это все же число=)

7) при вводе узлов подписывается x0, x1 ... цифры записаны шрифтом поменьше как индексы.
Очень удобно, мне интересно, в каком месте в коде прописан тот момент, что цифры должны быть другого размера?


Разъясните пожалуйста
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает кнопка "закрыть" rockwell Общие вопросы Javascript 9 21.07.2012 23:24
В IE9 не работает кнопка отправить - type="submit" Edan Internet Explorer 3 24.12.2011 00:21
Не работает кнопка через live Dorian_bs Общие вопросы Javascript 7 04.12.2011 02:29
Не работает кнопка отправки после загрузки Igor Shmigoff jQuery 2 29.12.2010 21:51
Не работает кнопка "Назад" savagden Javascript под браузер 3 10.12.2009 20:25