首页 > 解决方案 > Javascript中的嵌套函数,需要将变量传递给父函数

问题描述

我有一个表格,我正在使用它来获取签名,我希望它还能在后台获取用户的位置,作为额外的保证签名是真实的(工作是在现场完成的)。

我对 Javascript 不是很熟悉,并且一直在努力让它工作。我知道问题(可能)与变量的范围有关,并且父函数没有获得正确的数据传递。我什至将静态值分配给 lat 和 long 进行测试,当我将它们传递给父函数(发送)时,这些值仍然是空白的。

我尝试了很多事情,例如尝试将变量声明为全局变量,取消嵌套函数并使其成为自己的;但我认为我自己对 Javascript 的理解不足使我无法有效地解决这个问题。如果有人能指出我的错误(或指出我正确的方向),我会非常感激,我一直在努力解决这个问题,我知道这从根本上来说很简单。

		send : function(){

				var lat = "";
				var long = "";

				//if (empty == false){

				navigator.geolocation.getCurrentPosition(function(position) {
                var coords = position.coords;
                lat = coords.latitude;
                long = coords.longitude;
            	
            	lat = '123';
            	long = '1234';
            	//return lat;
            	//return long;
			    });


				//var lat = position.coords.latitude;
				//var long = position.coords.longitude;

				var canvas = document.getElementById("newSignature");
				var dataURL = canvas.toDataURL("image/png");
				document.getElementById("saveSignature").src = dataURL;
				//var replyemail = document.getElementById('replyemail').value;
				var workorder = document.getElementById('workorder').value;
				var printedname = document.getElementById('printedname').value;
				var managertype = document.getElementById('managertype').value;
				var dataform = document.createElement("form");
				document.body.appendChild(dataform);
				dataform.setAttribute("action","signsend/upload_file.php");
				dataform.setAttribute("enctype","multipart/form-data");
				dataform.setAttribute("method","POST");
				dataform.setAttribute("target","_self");
				dataform.innerHTML = '<input type="text" name="image" value="' + dataURL + '"/>' + '<input type="text" name="lat" value="' + lat + '"/>' + '<input type="text" name="long" value="' + long + '"/>' + '<input type="text" name="printedname" value="' + printedname + '"/>' + '<input type="text" name="managertype" value="' + managertype + '"/>' + '<input type="text" name="workorder" value="' + workorder + '"/>' +  '"/>'+'<input type="submit" value="Click me" />';
				dataform.submit();

				
				

				}

标签: javascriptscope

解决方案


推荐阅读