Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Обработка события щелчка мыши на строке таблицы (https://javascript.ru/forum/xhtml-html-css/77552-obrabotka-sobytiya-shhelchka-myshi-na-stroke-tablicy.html)

Vladiiimir 18.05.2019 21:57

Обработка события щелчка мыши на строке таблицы
 
Здравствуйте!

Подскажите пожалуйста как мне обработать событие щелчок мыши на строке таблицы, если у мне заранее не известно сколько строк в данной таблице будет?

У меня есть JSP-файл, в котором в <table> подтягиваются данные из базы данных, количество записей заранее не известно. Нужно чтобы при щелчке мыши на строку бралось значение ячейки (geographkoords) из этой ячейки и передавалось в функцию (UpdateGoogleMap).

<html>
<head>
    <title>Главная страница</title>
    <style>
        /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
        #map {
            height: 50%;
        }
        /* Optional: Makes the sample page fill the window. */
        html, body {
            height: 100%;
        }
    </style>
    <script>
        var map, marker;
        function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
                center: new google.maps.LatLng(51.754207,55.106578),
                zoom: 8
            });
        }

        function UpdateGoogleMap(latitude, longitude) {
            latitude = (latitude && +latitude)||51.754207;
            longitude = (longitude && +longitude)||55.106578;
            map.setCenter({
                lat: latitude,
                lng: longitude
            });
            marker && marker.setMap(null);
            marker=new google.maps.marker({
                position: {
                    lat: latitude,
                    lng: longitude
                },
                map: map,
                title: 'Это здесь'
            });
        };
    </script>
    <!-- -->
    <script src="https://maps.googleapis.com/maps/api/js?key=ххх&callback=initMap"
            async defer></script>
</head>

<body>
 <div>
    <table>
        <thead>
        <tr>
            <th>idPost</th>
            <th>namePost</th>
            <th>distanceBeetwenSensors</th>
            <th>geographkoords</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${listPosts}" var="post">
            <tr>
                <td>${post.idPost}</td>
                <td>${post.namePost}</td>
                <td>${post.distanceBeetwenSensors}</td>
                <td>${post.geographkoords}</td>
            </tr>
        </c:forEach>
        </tbody>
    </table>

 </div>
 <div id="map"></div>

</body>
</html>

рони 18.05.2019 22:26

addEventListener("click", ({target}) => {
	var tr = target.closest("tbody > tr");
	if(!tr) return;
    var position = tr.querySelector("td:last-child").textContent;
    alert(position)
});

Vladiiimir 18.05.2019 23:42

рони,
Спасибо!
А куда этот слушатель нужно вешать?

рони 19.05.2019 00:10

Цитата:

Сообщение от Vladiiimir
А куда этот слушатель нужно вешать?

никуда, он уже где нужно. ваша задача сделать строку 5, так как только, вы знаите, что в ней находится.

Vladiiimir 19.05.2019 09:53

Цитата:

Сообщение от рони (Сообщение 507957)
никуда, он уже где нужно. ваша задача сделать строку 5, так как только, вы знаите, что в ней находится.

А зачем делать 5-ю строку?

рони 19.05.2019 10:05

Цитата:

Сообщение от Vladiiimir
А зачем делать 5-ю строку?

Цитата:

Сообщение от Vladiiimir
Нужно чтобы при щелчке мыши на строку бралось значение ячейки (geographkoords) из этой ячейки сделано и передавалось в функцию (UpdateGoogleMap). нужно доделать, но нет данных от вас

:-?

Vladiiimir 19.05.2019 10:12

Цитата:

Сообщение от рони (Сообщение 507973)
:-?

Какие данные нужны?

Vladiiimir 19.05.2019 10:18

Цитата:

Сообщение от рони (Сообщение 507957)
никуда, он уже где нужно. ваша задача сделать строку 5, так как только, вы знаите, что в ней находится.

А, вы имели в виду изменить пятую строку в написанной вами функции?

Там мы должны вызвать функцию UpdateGoogleMap и передать в неё данные из ячейки?

рони 19.05.2019 10:24

Цитата:

Сообщение от Vladiiimir
Там мы должны вызвать функцию UpdateGoogleMap и передать в неё данные из ячейки?

да, осталось только получить формат данных от вас.

рони 19.05.2019 10:38

Цитата:

Сообщение от Vladiiimir
<td>${post.geographkoords}</td>

как это выглядит?


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