Я думаю, вы были на правильном пути, когда таблица не была полностью написана к тому времени, когда вы пытаетесь ее отсортировать. Хотя javascript запускает следующую функцию только после завершения предыдущей, браузер имеет многопоточность, поэтому вы не можете гарантировать, что какие-либо обновления DOM завершены только потому, что завершившая их функция.
Jquery предоставляет метод для ожидания загрузки элементов DOM перед выполнением функции, это метод ready (function () {...}).
Я бы попробовал следующую замену, когда вы вызываете функцию sortThis ():
$(document).ready( function() {
sortThis();
});
Это будет ожидать завершения загрузки DOM, прежде чем пытаться выполнить sortThis ().
Когда я писал это, я понял, что вы используете $ .get () для обновления таблицы, поэтому я уверен, что DOM не загружен, однако приведенное выше решение может не выполнить то, что вы хотите, потому что оно может выполняться до того, как таблица полностью заполнится. загружен. Функция $ .get () извлекает данные «в фоновом режиме», поэтому ваша функция sortThis () выполняется, как только ваш запрос на получение запущен , а не после его завершения. У вас есть два возможных решения, одно из которых заключается в предоставлении async = false для вашего запроса get, таким образом, следующая функция не будет выполняться, пока ваш запрос GET не будет выполнен и функция обратного вызова не будет выполнена.
$.get('myfile.csv', async=false, function(data) {
myfile = jQuery.csv()(data)
for (var x = 0; x ";
for (var y = 0; y " + myfile[x][y] + "";
}
str += "";
$('#myTable').append(str);
}
});
sortThis();
лучшее решение, на мой взгляд, состоит в том, чтобы поместить ваш вызов sortThis () в функцию обратного вызова. Это должно привести к тому, что страница загружается и обрабатывается быстрее, так как остальная часть вашего сценария может продолжаться, пока происходит обмен данными с сервером. Я бы использовал следующее решение:
$.get('myfile.csv', function(data) {
myfile = jQuery.csv()(data)
for (var x = 0; x ";
for (var y = 0; y " + myfile[x][y] + "";
}
str += "";
$('#myTable').append(str);
}
sortThis();
});
Надеюсь, это поможет;) Дайте мне знать, какие результаты вы получите ...