function未定义

我的jquery脚本得到一个函数未定义错误,我不知道为什么。

JQuery代码:http://maps.google.com/maps?file = api&v = 2&key = ABQIAAAAhTrgZ5jvdqcEQouEpPcZ_hS81NmJwGXlxuJr8lEEo4Njw3WRVhT8auzZb55JSMDkwIaCdNkPHL5gNg“type =”text / javascript“>

 $(document).ready(function(){ var dealerName = $('.name', '.adr').text(); var customerName = dealerName.slice(0, - 1); var customerAddress = $('.street', '.adr').text() + ', ' + $('.locality', '.adr').text() + ', ' + $('.state', '.adr').text() + ', ' + $('.zipCode', '.adr').text(); $("#nameAddress .placeholderName").html(customerName); $("#nameAddress .placeholderAddress").html(customerAddress); var error_address_empty = 'Please enter a valid address first.'; var error_invalid_address = 'This address is invalid. Make sure to enter your street number and city as well?'; var error_google_error = 'There was a problem processing your request, please try again.'; var error_no_map_info = 'Sorry! Map information is not available for this address.'; var default_address = customerAddress; var current_address = null; var map = null; var geocoder = null; var gdir = null; var map_compatible = false; if( GBrowserIsCompatible() ) { map_compatible = true; } function initialize_map() { if( map_compatible ) { map = new GMap2(document.getElementById('map_canvas')); geocoder = new GClientGeocoder(); show_address(default_address); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); } } function show_address(address) { if( map_compatible && geocoder ) { current_address = address; geocoder.getLatLng( address, function( point ) { if( !point ) { alert(error_no_map_info); } else { map.setCenter(point, 13); var marker = new GMarker(point); map.addOverlay(marker); marker.openInfoWindowHtml("" + customerName + "
" + address + ""); } } ); } return false; } function get_directions() { if( map_compatible ) { if( document.direction_form.from_address.value == '' ) { alert(error_address_empty); return false; } document.getElementById('directions').innerHTML = ''; gdir = new GDirections(map, document.getElementById('directions')); GEvent.addListener(gdir, 'error', handleErrors); set_directions(document.direction_form.from_address.value, current_address); } return false; } function set_directions(fromAddress, toAddress) { gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": "en" }); } function handleErrors(){ if( gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS ) alert(error_invalid_address); else if( gdir.getStatus().code == G_GEO_SERVER_ERROR ) alert(error_google_error); else if( gdir.getStatus().code == G_GEO_MISSING_QUERY ) alert(error_address_empty); else alert(error_invalid_address); } $(window).load(initialize_map); });

HTML页面中的代码:

 
  
  
  
Need directions?
Enter your address below to get turn-by-turn directions:
  
  

问题:无论如何,正如您在代码中看到的那样,我首先设置所有变量(包括customerName和customerAddress,在这种情况下最重要)。 然后我有四个函数,在脚本的最后我初始化地图。 除了html页面上的两件事,一切都有效。 有一个“onClick”使地图居中不起作用,表单提交不起作用。

我相信这是因为我在ready处理程序中设置了函数。 有人告诉我,我需要将函数绑定到该处理程序中的事件,就像我使用initialize_map一样。 我试过这样做,但我尝试的一切都行不通。 旁注和有用的提示可能:当我调用initialize_map时, show_address立即运行以启动地图; 但是,当您单击“经销商中心地图”按钮时,它也应该被调用。 只有在您提交表单时才会调用get_directions

截至目前,一切都在页面加载时显示; 然而,当我点击“经销商中心地图”或提交表格时,我得到一个javascript错误,告诉我该function未定义。

我对此感到沮丧。 不确定如何正常运行。 任何帮助是极大的赞赏。 谢谢!

这是因为你的show_addressget_directions document.ready处理程序的范围内定义,如果你想通过内联脚本调用它们,你需要在那里移动函数。