Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   MouseEvent у window.pageYOffset??? (https://javascript.ru/forum/events/72843-mouseevent-u-window-pageyoffset.html)

atanov 02.03.2018 13:57

MouseEvent у window.pageYOffset???
 
Доброго времени всем.

Есть таблица, при клике на строке таблица скрывается, вместо неё появляется div с элементами строки (для редактирования). В div'е есть кнопочка Exit, при нажатии на которую осуществляется remove этого div'а и возвращает таблице вид:

display = 'table';


Хотелось бы, чтобы при выходе страница скролилась в первоначальное положение. Однако вот такой казус - сия переменная:

var scrolledY = window.pageYOffset;


становиться MouseEvent + некоторое кол-во параметров (это в консоли пронаблюдал), если вызвать редактирование строки (появление div и скрытие таблицы).

рони 02.03.2018 14:18

atanov,
сделайте минимальный макет

atanov 02.03.2018 16:59

рони,
примерно так:

table{border-collapse:collapse;border:solid black 1px;display:table;}
.edivedit{background-color:grey;height:100px;width:100px;}


<meta http-equiv = "Content-Type" content = "text/html" charset = "utf-8">
<link rel = "stylesheet" type = "text/css" href = "19.css">
<table><tbody>
<tr><td>1</td><td>1</td><td>1</td></tr>
<tr><td>2</td><td>2</td><td>2</td></tr>
<tr><td>3</td><td>3</td><td>3</td></tr>
</tbody></table>
<script src = "19.js" type = "text/javascript"></script>


document.getElementsByTagName('table')[0].onclick = getS;
var scrolledY = window.pageYOffset;
function getS(){
document.getElementsByTagName('table')[0].style.display = 'none';
var divforedit = document.createElement('div');
divforedit.className = 'edivedit';
divforedit.id = 'ediv';
document.body.appendChild (divforedit);
var ebutton = document.createElement('button');
//ebutton.className = 'button-' + buttonnames[i];
ebutton.id = 'ebutton';
ebutton.innerHTML = 'Exit';
divforedit.appendChild (ebutton);
document.getElementById('ebutton').onclick = exit;
}
function exit(scrolledY){
	document.getElementById('ediv').remove();
	document.getElementsByTagName('table')[0].style.display = 'table';
	console.log(scrolledY);
}

рони 02.03.2018 17:15

atanov,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
table{border-collapse:collapse;border:solid black 1px;display:table;}
.edivedit{background-color:grey;height:100px;width:100px;}

p {
  height: 1000px;
}

 </style>


</head>

<body>
<p></p>
<table><tbody>
<tr><td>1</td><td>1</td><td>1</td></tr>
<tr><td>2</td><td>2</td><td>2</td></tr>
<tr><td>3</td><td>3</td><td>3</td></tr>
</tbody></table>
 <script>
    document.getElementsByTagName('table')[0].onclick = getS;
var scrolledY;
function getS(){
scrolledY = window.pageYOffset;
document.getElementsByTagName('table')[0].style.display = 'none';
var divforedit = document.createElement('div');
divforedit.className = 'edivedit';
divforedit.id = 'ediv';
document.body.appendChild (divforedit);
var ebutton = document.createElement('button');
//ebutton.className = 'button-' + buttonnames[i];
ebutton.id = 'ebutton';
ebutton.innerHTML = 'Exit';
divforedit.appendChild (ebutton);
document.getElementById('ebutton').onclick = exit;
}
function exit(){
  document.getElementById('ediv').remove();
  document.getElementsByTagName('table')[0].style.display = 'table';
  window.scrollTo( 0, scrolledY);
}

  </script>

</body>
</html>

atanov 02.03.2018 17:30

рони, спасибо большое, этот пример рабочий.
Однако в моём коде функция getS() находится внутри другой функции, в которой есть window.event. Чувствую, что из-за этого в exit() scrolledY попадает undifined :( Такое может быть?

рони 02.03.2018 17:33

Цитата:

Сообщение от atanov
Такое может быть?

нет, если scrolledY вне функций

atanov 02.03.2018 17:47

рони, спасибо!!!
Я осёл, поставил
var scrolledY = window.pageYOffset;
и думаю чё не работает :haha:


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