Короче говоря, я хочу использовать литерал объекта, чтобы позволить мне передавать неизвестное количество переменных в любом порядке в функцию. Хотя в теории это не имеет большого значения, в моем коде этот литерал объекта передается второй функции с именем on_change
.
on_change
работает путем сравнения innerHTML элемента со строкой; Если это то же самое, он устанавливает тайм-аут для повторного вызова функции. Если innerHTML элемента отличается от строки, то выполняется третий параметр, это будет либо функция, либо строка. в любом случае это будет выполняться. Я много тестировал эту функцию и использовал ее некоторое время.
Однако я не могу заставить объектный литерал проходить через вызовы функций ...
var params = { xpos:'false'};
on_change('window_3_cont_buffer','','
if(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[0].innerHTML == \'ERROR\'){
alert(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[1].innerHTML);
return false;
} else {
Window_manager.windows[3].load_xml(\'location/view.php?location_ID=3\', \'\', ' + params + ' ); }
');
Я называю это частью представления формы. После этой строки я вызываю функцию для загрузки некоторого контента через ajax, который работает нормально и запускает код из функции on_change
.
Я протестировал функцию load_xml
, она может вызвать alert(param.xpos)
и получить правильный ответ. Я даже могу добавить в проверку, что я не определен, так что в остальное время я звоню load_xml
Я не завален предупреждениями.
Функция load_xml
сначала устанавливает функцию on_change
, а затем вызывает функцию для загрузки содержимого в скрытый div. Как только AJAX-запрос обновил этот DIV, функция on_change
должна теперь вызывать функцию parse_xml
. Это вытаскивает информацию из XML-файла. Однако ... Идея этого буквального параметра объекта заключается в том, что он может указать этой parse_xml
функции игнорировать определенные вещи.
on_change("window_" + this.id + "_cont_buffer", "", "Window_manager.windows[" + this.id + "].parse_xml('" + param + "')");
Это часть load_xml
, она отлично работает, даже с битом параметра там. за исключением того, что parse_xml
не может использовать этот параметр.
Я смог добраться до точки, где parse_xml
может alert(param)
и дать [object object]
, что, как я думал, означало, что литерал объекта был пройден, но когда я пытаюсь вызвать alert(param.xpos)
Я получаю неопределенный.
Я знаю, что это проблема, и я мог бы обойти ее, просто приняв функцию, принимающую zillion булевы параметры, но это просто не очень хорошее решение.