Что ж, вам, вероятно, придется подождать, пока эта внешняя функция не выполнит свой код. Я ничего не знаю об этой функции или о том, где она запускается, поэтому я не могу вам чем-то помочь. Если он предоставляет вам возможность дать ему функцию обратного вызова, просто передайте ей имеющуюся у вас функцию 'showmsg' (и записали ее вне оператора готовности документа, как упоминал Джимми).
Если он не учитывает параметр функции обратного вызова и вы знаете, что он запускается при загрузке страницы, вы можете отложить вашу функцию showmsg, скажем, на 500 мс или около того. Это может дать достаточно времени для первого скрипта бежать (но вы бы хотели поиграть с этим, пока не поймете все правильно). Если первая функция использует AJAX для извлечения данных, вы можете пересмотреть использование этой функции или просто изменить эту стороннюю функцию (если лицензия позволяет), чтобы добавить функцию обратного вызова.
Вы можете настроить задержку скрипта следующим образом:
$(function() {
setTimeout(function() {
if ($("#selectaddress option").length > 0) {
$('#buttonhint2').slideDown('normal');
}
},500);
});
Кроме того, помните, что вам не нужно проверять количество параметров в поле выбора, а не количество полей выбора, которые есть на странице. И вы проверяли, по крайней мере, две опции ранее, предоставленный мной скрипт проверяет, по крайней мере, 1.