Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2014, 18:54
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Не срабатывают события из HTML
Добрый день, у меня такая проблема:
события срабатывают из JS:
document.getElementById('start').onclick = function (){
//код
}
,
но не срабатывают из HTML
function clear(){
//код
}

<input type="text" onKeyDown="clear()" size="20" id="start">

В чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2014, 19:36
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

можно использовать onkeydown="window.clear()" либо поменяйте имя функции

Последний раз редактировалось Pavel M., 09.09.2014 в 20:53.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2014, 20:46
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

devastor,
покажи полный код или хотя бы ошибки.
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2014, 21:34
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

тест
<script>
function clear(){
	console.log("test 1:");
	console.log(document.clear === clear); console.log(window.clear === clear);
}
clear();
</script>​
<button onclick="console.log('test 2:'); console.log(document.clear === clear); console.log(window.clear === clear);">click</button>
Ответить с цитированием
  #5 (permalink)  
Старый 10.09.2014, 07:53
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Полный код JS
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
ymaps.ready(init);
function clear(){
			console.log("test 1:");
    		console.log(document.clean === clean); console.log(window.clean === clean);
       		myCollection.removeAll();
			geolocation.get({
        provider: 'yandex',
        mapStateAutoApply: true
    }).then(function (result) {
        result.geoObjects.get(0).properties.set({});
		myMap.geoObjects.add(result.geoObjects);
    });
	clear();
}
function init() {
	//создаём карту
    var geolocation = ymaps.geolocation,
        myMap = new ymaps.Map('map', {
            center: [54.724403, 55.970748],
            zoom: 10,
			controls: []
        });
		var myCollection = new ymaps.GeoObjectCollection();
		//отключение движения карты и масштабирования	
		myMap.behaviors.disable(['drag','rightMouseButtonMagnifier', 'scrollZoom', 'dblClickZoom', 'multiTouch']);
		document.getElementById('load').onclick = function () {
			if (document.getElementById('start').value != null){
				//Строим Маршрут, по точкам, с учётом пробок
				var start = document.getElementById('start').value;
				var finish = document.getElementById('finish').value;
				ymaps.route([start, finish], {avoidTrafficJams: true, mapStateAutoApply: true}).then(
				function (route) {
					myCollection.add(route);
					myMap.geoObjects.add(myCollection);
					document.getElementById('city').value = (route.getLength()/1000).toFixed(1) + ' километров';
					document.getElementById('timenone').value = timeformat(route.getTime()); 
					document.getElementById('timeprob').value = timeformat(route.getJamsTime());
					document.getElementById('price').value = price((route.getLength()/1000).toFixed(1)) + ' руб';
				},
				function (error) {
				if(error.message == "can't construct a route") {
					alert("При построении маршрута возникла ошибка.\r\nПопробуйте изменить адреса или перезагрузить 				страницу.");
				} else {
					alert("Возникла ошибка: " + error.message);
				}
        }
	);
}
}
//функция расчета стоимости
function price(length){
	var price = 30 + (length * 12);
	if (price < 100) { price = 100;}
	return price.toFixed(0);
}
//функция правильного вывода часов и минут
function timeformat(time){
	var twotime = time = time /60;
	if (time >= 60){
		time = Math.floor(time / 60);
		var minuts = twotime - (time * 60);
		var hour;
				switch (true) {
				
				case time == 1:
				hour = ' час';
				break
				
				case time >= 2 && time < 5:
				hour = ' часа';
				break
				
				case time > 5:
				hour = ' часов';
				break
				
				default:
				hour = ' час';
				break
			 
			}
			minuts = minutstime(minuts);
			return time + hour +' '+ minuts;
		}
	return minutstime(twotime);
	}
// вспомогательная функция для правильного вывода минут
function minutstime(minuts){
	minuts = minuts.toFixed(0);
	var timemin;
	switch (true) {
				
				case minuts == 1:
				timemin = minuts + ' минута';
				break
				
				case timemin >= 2 && timemin < 5:
				timemin = minuts + ' минуты';
				break
				
				case timemin > 5:
				timemin = minuts + ' минут';
				break
				
				default:
				timemin = minuts + ' минут';
				break
			 
			}
	return(timemin);
	}
};

И HTML
<body style="padding:0px; margin:0px; height:2000px;">
    <div id="map" style="width: 100%; position: absolute; height: 70%; padding:0px; margin:0px; z-index:1;"></div>
     <div style="padding:10px; position: absolute; z-index:2; background:#FFF; margin:30px 25% 0 0; opacity:.8;">
	 <form  method="post"  action="javascript:insert()">
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Начало:</td>
    <td><input type="text" onkeydown="window.clear()" size="20" id="start" value="Алкино-2" ></td>
  </tr>
      <tr>
    <td>Финиш:</td>
    <td><input type="text" onkeydown="window.clear()" size="20" id="finish" value="Уфа, Путейская 1Б" ></td>
  </tr>
  <tr></tr>
  <tr>
    <td>Расстояние:</td>
    <td><input type="text" size="20" id="city" ></td>
  </tr>
  <tr>
    <td>Время без учета пробок:</td>
    <td><input type="text" size="20"  id="timenone"></td>
  </tr>
  <tr>
    <td>Время с учетом пробок:</td>
    <td><input type="text" size="20"  id="timeprob"></td>
  </tr>
    <tr>
    <td>Стоимость:</td>
    <td><input type="text" size="20"  id="price"></td>
  </tr>
  <tr>
  <INPUT TYPE="SUBMIT" VALUE ="Принять заказ"></form>
	   <button id="load">Расчитать</button>
	   <button onclick="return location.href = 'http://test.devastor.ru/taxi/zakaz.php'" > ЗАКАЗЫ</button>
       <button onclick="console.log('test 2:'); console.log(document.clean === clean); console.log(window.clean === clean);">click</button>
  </tr>
  </table>




     </div>
</body>

На JS пишу второй день, так что сильно палками прошу не бить
При этом console.log("test 1:"); не срабатывает однозначно даже при явном вызове ниже

Последний раз редактировалось devastor, 10.09.2014 в 09:04.
Ответить с цитированием
  #6 (permalink)  
Старый 10.09.2014, 08:23
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Если делаю document.clear(), либо просто clear(), то ошибок не выдаёт, но и не срабатывает, если делаю window.clear то выдаёт ошибку
TypeError: window.clear is not a function
Ответить с цитированием
  #7 (permalink)  
Старый 10.09.2014, 13:57
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Решил перевызовом функции, всем спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 10.09.2014, 21:37
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

devastor,
каким ещё перевызовом?
Несколько замечаний:
1. В конце функции clear() она вызывает сама себя без всякого условия, а это не хорошо. Да и зачем?
2. Когда я смотрел код, то увидел, что переменные myCollection и geolocation у тебя локальные, и определяются в одних функциях, а используются в других. Это должно приводить к ошибкам.
3. Функции insert() нет в коде, следовательно будет ошибка при отправке.
Ответить с цитированием
  #9 (permalink)  
Старый 10.09.2014, 21:50
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от devastor
Если делаю document.clear(), либо просто clear(), то ошибок не выдаёт, но и не срабатывает
с чего бы ему срабатывать (со смыслом, которым он наделялся раньше), он больше не поддерживается - он остался, но do nothing

Сообщение от devastor
<button onclick="console.log('test 2:'); console.log(document.clean === clean); console.log(window.clean === clean);">click</button>
откуда у тебя там clean вообще затесался и что ты хочешь этим проверить?

может уже подумать об этом?
Ответить с цитированием
  #10 (permalink)  
Старый 12.09.2014, 15:53
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

А есть возможность использования примерно следующего
//данный код не рабочий и служит для показания, того что необходимо
((document.getElementById('id1').[событие]) ||(document.getElementById('id2').[событие])) = function(){
            //тело
        }

Т.е что бы одну функцию можно было вызвать событиями нескольких элементов не прибегая к
<input type="text" [событие]="[имя]">

Последний раз редактировалось devastor, 12.09.2014 в 17:22.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить код html из-за события onClick Alex45 Events/DOM/Window 54 14.01.2013 01:27
Не срабатывают события в UI datepicker FRIE jQuery 0 10.08.2012 17:10
Сгенерированный HTML не откликается на события posta Общие вопросы Javascript 2 16.11.2011 06:53
Не срабатывают события из iframe при перетаскивании в него курсора в Opera jaguar954 Events/DOM/Window 1 01.08.2011 12:17
Не срабатывают события на элементе <option> DreamTheater Events/DOM/Window 2 14.06.2011 20:24