Попробуйте поместить часть кода, которая получает ширину в таймере, запланированную на 1 миллисекунду ...
Браузер не будет выполнять вычисления изменения размера во время выполнения скрипта. Если вы запланируете таймер и выйдете из функции JS, браузер обновит состояние всех элементов DOM, которые изменились, а затем запустит таймер, поэтому к этому времени ширина вашего комбинированного списка обновится.
Я использовал нечто очень похожее на веб-странице, основанной на GWT
Этот трюк работает не только для JS, но и во многих средах с графическим интерфейсом, которые делают макет с задержкой.