В проекте есть таблица Bootstrap, состоящая из трех колонок. Подключен плагин colresizable для того чтобы иметь возможность изменять ширину колонок таблицы. И для того чтобы сохранять измененные ширины колонок таблицы пользователем, в скрипте включено свойство postbackSafe, которое сохраняет все изменения в sessionStorage. И вот вопрос, допустим пользователь изменил ширину колонок, и какие-то значения в sessionStorage поменялись, как отследить изменившиеся там значения и поместить в переменную?
$("#flex").colResizable({
liveDrag: true,
resizeMode: 'flex',
postbackSafe: true
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Resizable columns -->
<script src="https://rawgit.com/alvaro-prieto/colResizable/master/colResizable-1.6.js"></script>
<div class="container">
<h2>Bordered Table</h2>
<p>The .table-bordered class adds borders to a table:</p>
<table class="table table-bordered" id="flex">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>Mary</td>
<td>Moe</td>
<td>mary@example.com</td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
</tbody>
</table>
</div>
Думаю, вам не надо следить за sessionStorage. В плагине есть событие изменения ширины onResize. Вот на него и подписывайтесь, получайте значение ширины, записывайте в переменную.
Пример из документации:
$(function(){
var onSampleResized = function(e){
var table = $(e.currentTarget); //reference to the resized table
};
$("#flex").colResizable({
liveDrag: true,
resizeMode: 'flex',
postbackSafe: true,
onResize: onSampleResized
});
});
Пример вычисления ширины.
function onSampleResized(e) {
var $table = $(e.currentTarget);
console.clear();
$table.find('th').each(function(i) {
console.log(`column: ${i}; width: ${$(this).width()}`);
});
}
$("#flex").colResizable({
liveDrag: true,
resizeMode: 'flex',
postbackSafe: true,
onResize: onSampleResized
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Resizable columns -->
<script src="https://rawgit.com/alvaro-prieto/colResizable/master/colResizable-1.6.js"></script>
<div class="container">
<h2>Bordered Table</h2>
<p>The .table-bordered class adds borders to a table:</p>
<table class="table table-bordered" id="flex">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>Mary</td>
<td>Moe</td>
<td>mary@example.com</td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
</tbody>
</table>
</div>
В хроме можно посмотреть с каким ключом и значением сохраняется.
Получить можно через
let variable = sessionStorage.getItem('key')
API документация
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости