Дополнительно
Использование кнопки HTML для вызова функции JavaScript
Я пытаюсь использовать HTML-кнопку для вызова функции JavaScript.
Вот код:
<input type="button" value="Capacity Chart" onclick="CapacityChart();">
Но, похоже, он не работает правильно. Есть ли лучший способ сделать это?
Вот ссылка:http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html нажмите на вкладку емкости в нижнем левом разделе. Кнопка должна генерировать предупреждение, если значения не изменены, и выводить график, если вы вводите значения.
214
9
Есть несколько способов для обработки событий с HTML/дом. Там's отсутствие реальной правильного или неправильного способа, но различные способы полезны в разных ситуациях.
1: там'ы определив его в HTML:
2: там's добавление его в собственность дом за событий в JavaScript:
3: и там'ы подключая функцию в обработчик событий с помощью JavaScript:
Второй и третий способы позволяют рядный/анонимные функции, и оба должны быть объявлены после того, как элемент был разобран из документа. Первый способ это'т действительный XHTML, потому что атрибут onclick разве't в спецификации XHTML.
1-й и 2-й способы являются взаимоисключающими, что означает использование одного (2-го) будет перекрывать другие (1-й). 3-й способ позволит вам прикрепить столько функций, как вам нравится один и тот же обработчик события, даже если 1-го или 2-го метода была использована.
Скорее всего, проблема кроется где-то в CapacityChart()` функция. После посещения вашей ссылке и запуска своего скрипта, то CapacityChart() функция работает и два окна открываются (одна закрыта согласно сценария). Если у вас есть следующие строки:
Вместо этого попробуйте следующее:
Редактировать Когда я увидел ваш код, я думал, Вы ее писали специально для IE. Как уже упоминалось, вам нужно будет заменить ссылки на документ.все с документами.метода getElementById`. Однако, вы все еще есть задача исправлять скрипт после этого, так что я рекомендовал бы получить это работает, по крайней мере, т. е. сначала как любые ошибки вы делаете изменение кода, чтобы работать кросс-браузер может привести к еще большей путанице. Как только он's работает в IE, то это будет легче сказать, если это's работает в других браузерах, пока вы'вновь обновление кода.
Я бы сказал, что лучше добавить javascript ненавязчивым образом...
если вы используете jQuery, вы можете сделать что-то вроде:
Ваш HTML и способ вызова функции с помощью кнопки выглядеть правильно.
Проблема появляется в CapacityCount функции. Я': &я получаю эту ошибку в консоли на Firefox 3.5;документ.все неопределено" на линии 759 от bendelcorp.js.
Редактировать:
Выглядит как документ.все это т. е.-единственное, и это нестандартный способ доступа в дом. Если вы используете документ.метод getElementById (), он, вероятно, должен работать. Пример:
документ.метода getElementById("и RUnits и").значение "вместо" документ.все.Емкость.RUnits.значение
Это выглядит правильно. Я полагаю, что вы определили свою функцию либо с другим именем, либо в контексте, который не виден кнопке. Пожалуйста, добавьте немного кода
Просто, чтобы вы знали, точку с запятой(;) не должно было там быть кнопку при вызове функции.
Поэтому стоит просто посмотреть, как это:
функция onclick="и CapacityChart()"
втогда это все должно работать :)
У меня есть интеллектуальная функция-звонок-поддержка код кнопки:
Одна серьезная проблема у вас заключается в том, что вы're через браузер нюхают без уважительной причины:
Я'м на Хром, так
навигатор.имя_приложения
выиграл'т бытьНетскейп
. Ли документ поддержку хром.все
? Возможно, но опять же может и нет. А как насчет других браузеров?Версия код на
Нетскейп
филиал должен работать на любом браузере, прямо как в Netscape навигатор 2 с 1996, так что вы, вероятно, следует просто придерживаться этого... кроме того, что он выиграл'т работу, (или это'т гарантированно работать), потому что вы не'т указанного атрибутаname
наввод
элементов, поэтому они выиграли'т быть добавлены в форму'массив sэлементы
в качестве имени элемента:Либо дать ему имя и использовать массива
элементов
, или (лучше) использоватькоторый будет работать на всех современных браузерах - нет ветвления необходимо. Просто чтобы быть на безопасной стороне, заменить, что, вынюхивая версия браузера больше или равно 4 с чеком для
метода getElementById
поддержки:Вы, вероятно, хотите проверить ваш вклад, как хорошо; что-то вроде
поможет.
Ваш код находится не на этой линии:
я попробовал наступать хотя с Firebug и он не существует. это должно помочь вам выяснить проблему.
у вас есть jQuery и ссылки. вы могли бы также использовать его во все эти функции. это'Лл очистить ваш код значительно.
глупым способом:
Вам следует прочитать о дискретном javascript, и использовать метод bind фреймворка для привязки обратных вызовов к событиям dom.