Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отдельные всплывающие окна для каждой ячейки таблицы (https://javascript.ru/forum/events/77147-otdelnye-vsplyvayushhie-okna-dlya-kazhdojj-yachejjki-tablicy.html)

Mrrukkus 30.03.2019 08:36

Отдельные всплывающие окна для каждой ячейки таблицы
 
Доброго времени суток, уважаемые программисты, верстальщики и все все. Возникла проблема, в которой самостоятельно разобраться не получается а ответа годного который наставил бы на путь истинный в интернете не нашёл. Суть: есть html таблица в каждой to которой есть отдельные divы под определенные данные. При нажатии на любую ячейку РЯДОМ с боку появляется окошко для добавления/редактирования этих самых данных в ячейке. Вопрос в том, как через js сделать так, чтоб при нажатии на любую ячейку рядом с ней всплывало это самое окошко в котором я мог бы редактировать данные этой ячейки? Из всех прочитанных материалов понимаю, что из ячеек нужно сделать массив, но не понимаю как правильно это все сделать, так как навыков в js уж совсем мало.:(

ksa 01.04.2019 07:35

Цитата:

Сообщение от Mrrukkus
Из всех прочитанных материалов понимаю, что из ячеек нужно сделать массив

Это не обязательно...
Можно обойтись одним окном, которое будет абсолютно позиционироваться относительно всей таблицы.
Останется только правильно вычислять координаты верхней точки этого окна.

Dilettante_Pro 01.04.2019 11:14

А дополнительное окошечко обязательно нужно?
<table border="1" width="200">
   <tr>
     <td>
         <div contenteditable>div 111</div><div contenteditable>div 112</div>
     </td>
     <td>
         <div contenteditable>div 121</div><div contenteditable>div 122</div>
     </td>
   </tr>
   <tr>
     <td>
         <div contenteditable>div 211</div><div contenteditable>div 212</div>
     </td>
     <td>
         <div contenteditable>div 221</div><div contenteditable>div 222</div>
     </td>
   </tr>
</table>

Mrrukkus 01.04.2019 12:46

Цитата:

Сообщение от ksa (Сообщение 505826)
Это не обязательно...
Можно обойтись одним окном, которое будет абсолютно позиционироваться относительно всей таблицы.
Останется только правильно вычислять координаты верхней точки этого окна.

Нет, там обязательно у каждой ячейки должно появляться это самое окно, которое относительно этой ячейки определенным спозиционировано (справа)

Цитата:

Сообщение от Dilettante_Pro (Сообщение 505829)
А дополнительное окошечко обязательно нужно?
<table border="1" width="200">
   <tr>
     <td>
         <div contenteditable>div 111</div><div contenteditable>div 112</div>
     </td>
     <td>
         <div contenteditable>div 121</div><div contenteditable>div 122</div>
     </td>
   </tr>
   <tr>
     <td>
         <div contenteditable>div 211</div><div contenteditable>div 212</div>
     </td>
     <td>
         <div contenteditable>div 221</div><div contenteditable>div 222</div>
     </td>
   </tr>
</table>

Да, окошко нужно обязательно, оно имеет свой стиль, так дизайн предусматривает)

ksa 01.04.2019 12:51

Цитата:

Сообщение от Mrrukkus
Нет, там обязательно у каждой ячейки должно появляться это самое окно, которое относительно этой ячейки определенным спозиционировано (справа)

Одновременно могут быть видны несколько таких окон?

Dilettante_Pro 01.04.2019 13:27

Ну, насчет стиля...
<style>
button { display:none;}
td:hover div { background-color: lightgreen; }
td:hover button { display:block; }
</style>
<table border="1" width="200">
   <tr>
     <td>
         <div contenteditable>div 111</div><div contenteditable>div 112</div>
        <button>Запись</button>
        <button>Отмена</button>
     </td>
     <td>
         <div contenteditable>div 121</div><div contenteditable>div 122</div>
     </td>
   </tr>
   <tr>
     <td>
         <div contenteditable>div 211</div><div contenteditable>div 212</div>
     </td>
     <td>
         <div contenteditable>div 221</div><div contenteditable>div 222</div>
     </td>
   </tr>
</table>

Dilettante_Pro 01.04.2019 14:18

Или так
<style>
table { position:relative; top: 20px; left:50px;}
td:hover  {transform: scale(1.5); }
td:hover div { background-color: lightgreen; }

</style>
<table border="1" width="200">
   <tr>
     <td>
         <div contenteditable>div 111</div><div contenteditable>div 112</div>
     </td>
     <td>
         <div contenteditable>div 121</div><div contenteditable>div 122</div>
     </td>
   </tr>
   <tr>
     <td>
         <div contenteditable>div 211</div><div contenteditable>div 212</div>
     </td>
     <td>
         <div contenteditable>div 221</div><div contenteditable>div 222</div>
     </td>
   </tr>
</table>


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