JavaScript抛出一个read属性';提交';错误
我得到了这个错误: ?shiftType=4:49未捕获类型错误:无法读取未定义的属性“提交” 成功时(?类型=4:49) 成功@?类型=4:49 这是我的JavaScriptJavaScript抛出一个read属性';提交';错误,javascript,Javascript,我得到了这个错误: ?shiftType=4:49未捕获类型错误:无法读取未定义的属性“提交” 成功时(?类型=4:49) 成功@?类型=4:49 这是我的JavaScript 这是HTML部分: echo '<form action="" method="post" enctype="multipart/form-data" name="openShiftForm">'; echo '<inp
这是HTML部分:
echo '<form action="" method="post" enctype="multipart/form-data" name="openShiftForm">';
echo '<input type="hidden" id="latlng" name="latlng" value="">';
echo '<input type="hidden" name="action" value="openShift">';
echo '<button type="button" onclick="addLatlng()" class="btn btn-danger btn-lg" name="openShift" value="1">'.$shiftTypeArray[intval($_SESSION['openShiftType'])]['name'].' open shift</button>';
echo '</form>';
echo';
回声';
回声';
回显“”。$shiftTypeArray[intval($_SESSION['openShiftType'])]['name'.'openshift';
回声';
有人能帮忙吗?Ciao,尝试在表单中添加id,然后
submit()
it。像这样:
echo '<form action="" id="myform" method="post" enctype="multipart/form-data" name="openShiftForm">';
echo '<input type="hidden" id="latlng" name="latlng" value="">';
echo '<input type="hidden" name="action" value="openShift">';
echo '<button type="button" onclick="addLatlng()" class="btn btn-danger btn-lg" name="openShift" value="1">'.$shiftTypeArray[intval($_SESSION['openShiftType'])]['name'].' open shift</button>';
echo '</form>';
<script type="text/javascript">
<!--
function addLatlng()
{
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos)
{
var crd = pos.coords;
console.log(crd.latitude);
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
document.getElementById('latlng').value = crd.latitude + "-" + crd.longitude;
document.getElementById('myform').submit();
};
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
document.getElementById('latlng').value = "ERROR" + "-" + err.message;
document.getElementById('myform').submit();
};
navigator.geolocation.getCurrentPosition(success, error, options);
}
// -->
</script>
echo';
回声';
回声';
回显“”。$shiftTypeArray[intval($_SESSION['openShiftType'])]['name'.'openshift';
回声';
因此,在success函数中调用
document.openShiftForm.submit()
文档
确实包含表单,但它不会自动添加元素,因此您可以使用点符号访问它们。因此,您无法通过编写类似于document.[元素名称]
的内容来访问它们。这就是为什么会出现错误,无法读取未定义的属性submit
,因为openShiftForm
不存在于文档的顶层
访问元素的方法是使用document对象提供的一些getter方法。在这里,你可能会写下如下内容:
const form = document.getElementById("openShiftForm");
这样做需要在openShiftForm
的html中向表单元素添加id
属性。一旦您有权访问您调用的表单元素,就可以拉出您需要的字段,并对它们执行您需要执行的操作。您可以在onsuccess
函数中执行此操作
这只是一种方法。如果你搜索一下,你会发现
文档
对象有很多方法可以用来访问和操作dom。更加熟悉这些方法将有助于您了解如何设置它。由于以前的有用答案,我做了一些更改,但仍然不起作用
JAVASCRIPT
<script type="text/javascript">
<!--
function addLatlng()
{
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos)
{
var crd = pos.coords;
console.log(crd.latitude);
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
document.getElementById('latlng').value = crd.latitude + "-" + crd.longitude;
document.getElementById('openShiftForm').submit();
};
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
document.getElementById('latlng').value = "ERROR" + "-" + err.message;
document.getElementById('openShiftForm').submit();
};
navigator.geolocation.getCurrentPosition(success, error, options);
}
// -->
</script>
HTML
echo';
回声';
回声';
echo'.$schichttypArray[intval($_SESSION['openSchichttyp'])]['name'.'1Schichtö;福宁;
回声';
现在我得到了一个稍微不同的错误:
未捕获的TypeError:成功时无法读取null的属性“submit”
为表单赋予“name”属性并不能使其作为变量可用。但是如何使其可用?Ciao Giovanni,非常感谢您的帮助!我将其更改为:HTML部分:JavaScript部分:document.getElementById('openShiftForm').submit();现在我遇到了这个错误:Uncaught TypeError:在成功时无法读取null的属性'submit',您能再次提供帮助吗?Ciao,由于功能策略将始终禁用地理位置,因此我无法与您共享一个代码段,因此我做了一个测试:继续,复制您的代码并进行更新,然后进行测试。它起作用了!只要做一个检查,让我知道。是的,它工作,它显示我的位置这是我的整个控制台日志与我的应用程序:您当前的位置是:?类型=5:45纬度:53.2063064?类型=5:46经度:8.5153522?类型=5:47或多或少59米?type=5:49未捕获的TypeError:无法在成功时读取null的属性“submit”(.type=5:49)我不知道,您使用的是什么浏览器?google chrome浏览器,但正如我所写的:地图API正在工作Hey Pradeep,非常感谢您的详细回答。我虽然明白了,但还是不行。。我更改了:HTML部分:JavaScript部分:document.getElementById('openShiftForm').submit();现在我得到了这个错误:uncaughtypeerror:在成功时无法读取null的属性'submit',非常感谢您,因为这里不仅仅有一个
submit
函数,您可以调用表单
元素。这是你必须明确设定的。所以你可以做两件事。1.您可以设置它,也可以设置为2。您只需在代码块中执行需要执行的操作,然后运行该函数。还有,你是如何测试的?我看到你的HTML你只是在运行echo'HTML字符串,你是在终端上运行这个吗?还是在浏览器中?在浏览器中。使用$_POST['latlng']我在提交目的地站点上绘制数据,但是如何通过(或从)成功功能提交表单?我在该表单中没有提交按钮。有必要吗?
echo '<form action="" method="post" enctype="multipart/form-data" name="openShiftForm" id="openShiftForm">';
echo '<input type="hidden" id="latlng" name="latlng" value="">';
echo '<input type="hidden" name="action" value="openShift">';
echo '<button type="button" onclick="addLatlng()" class="btn btn-danger btn-lg" name="openShift" value="1">'.$schichttypArray[intval($_SESSION['openSchichttyp'])]['name'].' 1Schicht öffnen</button>';
echo '</form>';