Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Функция обменивающая местами переменные используя событие Blur (https://javascript.ru/forum/dom-window/59134-funkciya-obmenivayushhaya-mestami-peremennye-ispolzuya-sobytie-blur.html)

unkind 29.10.2015 12:20

Функция обменивающая местами переменные используя событие Blur
 
Здравствуйте!
Не судите строго,только учусь)
Напишите сценарий, который обменивает местами значения двух введенных переменных (использовать событие Blur).

вот что получилось у меня:
<html>
    <head>
        <title>Обмен переменных</title>
        <script type="text/javascript" language="javascript">
function focusFunction() {

    var a= document.getElementById("x");
	var b=document.getElementById("y");
[b,a] = [a,b];//как вывести это в text поле x/y
}
function blurFunction(){
 var a=document.getElementById("x");
		var b=document.getElementById("y");
[a,b] = [b,a];//как вывести это в text поле x/y
		

  
	}

        </script>
    </head>
    <body>

           <input type="text" id="x" onfocus="focusFunction()" onblur="blurFunction()">
		   <input type="text" id="y" onfocus="focusFunction()" onblur="blurFunction()">

    </body>
</html>

рони 29.10.2015 12:46

unkind,
<html>
    <head>
        <title>Обмен переменных</title>
        <meta charset="utf-8">
        <script>
window.addEventListener('DOMContentLoaded', function() {
var nodes = document.querySelectorAll('#x,#y');
[].forEach.call(nodes, function(item, i) {
        item.addEventListener('blur', function() {
            var val = this.value;
            item.value = nodes[+!i].value
            nodes[+!i].value = val;
        });
    });   });
</script>
    </head>
    <body>
           <input type="text" id="x"  >
		   <input type="text" id="y"  >

    </body>
</html>

unkind 29.10.2015 12:49

рони,
скажите, а если я ввел в первое поле 7 , а в другое 6 и при потере фокуса должна происходить смена местами..это как?и это не js ,а больше на jquery похоже или я ошибаюсь..

рони 29.10.2015 12:56

Цитата:

Сообщение от unkind
это как?

что как?

unkind 29.10.2015 12:58

рони,
я пытался сделать так: 2 текстовых поля в которые я ввожу числа и если фокус пропал с любого поля то числа меняются местами

рони 29.10.2015 12:59

Цитата:

Сообщение от unkind
и это не js ,а больше на jquery похоже или я ошибаюсь..

jquery это тоже js, но код выше это не jquery.

рони 29.10.2015 13:00

Цитата:

Сообщение от unkind
я пытался сделать так: 2 текстовых поля в которые я ввожу числа и если фокус пропал с любого поля то числа меняются местами

разве код в 2 посте не делает этого?

unkind 29.10.2015 13:29

рони,
все,теперь разобрался

unkind 29.10.2015 13:43

рони,
скажите,а код который я в шапке указал, бред полный?

рони 29.10.2015 13:45

Цитата:

Сообщение от unkind
скажите,а код который я в шапке указал, бред полный?

всё идёт к тому что [a,b] = [b,a] скоро станет нормой, сейчас так не прокатит(почти), но пока ваш код просто не полный

unkind 29.10.2015 13:54

рони,
а в какую сторону копать? хочу свой довести до ума

рони 29.10.2015 14:16

unkind,
var a = 5, b = 3;

поменяйте местами значения, остальное уже проще, получить элементы (у вас уже есть), получить value этих элементов в переменные a и b , поменять местами, присвоить value новые a и b

unkind 29.10.2015 14:18

рони,
а поменять местами правильнее без 3-ей переменной?

рони 29.10.2015 14:20

Цитата:

Сообщение от unkind
а поменять местами правильнее без 3-ей переменной?

попробуйте для практики, но не усложняйте себе задачу легче через третью.

unkind 29.10.2015 14:24

рони,
<html>  
<head> 
<script language="JavaScript">
                 function myFunction(s) {
            var x = Number(s.x.value);
            var y = Number(s.y.value);
           var result=(Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
           alert(result);
    }
   
</script> 
</head> 
<body>
<form name="form1">
            <p> Введите координаты точки по оси х: <input type="text" size="4" name="x"> </p>
            <p> Введите координаты точки по оси y: <input type="text" size="4" name="y"> </p>
            <input type="reset" class="reset1" value="Сбросить">
            <br> <br> <br>
            Расстояние  <input type="text" width="50" name="res" value="выделите текст" onselect="myFunction()"> 
        </form>
</body>
  
</html>

а не подскажите,почему onselect="myFunction() не срабатывает при выделении текста?

рони 29.10.2015 14:31

Цитата:

Сообщение от unkind
а не подскажите,почему onselect="myFunction() не срабатывает при выделении текста?

функция работает как положено, но значение s никто не указал

unkind 29.10.2015 14:33

Цитата:

Сообщение от рони (Сообщение 393577)
функция работает как положено, но значение s никто не указал

убрал,в мое браузере не отрабатывает alert (chrome)

рони 29.10.2015 14:36

Цитата:

Сообщение от unkind
убрал,

что убрали??? когда добавлять надо onselect="myFunction(сюда что-то )

рони 29.10.2015 14:37

unkind,
onselect="myFunction(this.form)"

unkind 29.10.2015 14:39

рони,
вот я и хотел уточнить,что нужно передать?
x и y ?

unkind 29.10.2015 16:36

Цитата:

Сообщение от рони (Сообщение 393580)
unkind,
onselect="myFunction(this.form)"

рони,пробовал,ничего не происходит

рони 29.10.2015 17:11

unkind,
ввести две цифры и выделить текст
<html>
<head><meta charset="utf-8">
<script language="JavaScript">
                 function myFunction(s) {
            var x = Number(s.x.value);
            var y = Number(s.y.value);
           var result=(Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
           alert(result);
    }

</script>
</head>
<body>
<form name="form1">
            <p> Введите координаты точки по оси х: <input type="text" size="4" name="x"> </p>
            <p> Введите координаты точки по оси y: <input type="text" size="4" name="y"> </p>
            <input type="reset" class="reset1" value="Сбросить">
            <br> <br> <br>
            Расстояние  <input type="text" width="50" name="res" value="выделите текст" onselect="myFunction(this.form)" >
        </form>
</body>

</html>

unkind 29.10.2015 20:40

Спасибо!Все работает


Часовой пояс GMT +3, время: 23:20.