我目前得到标题中显示的错误,我试图解决问题与stackoverflow上找到的众多解决方案,但尚未有任何工作,任何建议/帮助将不胜感激。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title> Donor Request </title>
</head>
<body>
<form>
<div>
<label> Blood Type </label>
<input type="text" name="" id="bloodType" value="">
<label> Location </label>
<input type="text" name="" id="Location" value="">
</div>
<button type="submit" name="button"> Request </button>
</form>
</body>
<script type="text/javascript">
const { ipcRenderer } = require('electron').remote;
const form = document.querySelector('form')
form.addEventListener('submit', submitForm);
window.onload = function(){
const bloodType = document.getElementById("bloodType").value;
}
function submitForm(e){
e.preventDefault();
console.log("working");
console.log(bloodType, "working");
ipcRenderer.send('Request:bloodType', bloodType);
}
</script>
</html>
将bloodType
声明为onLoad之外的var
或let
,使其可以在另一种方法中使用,或者从submitForm
内部获取。
function submitForm(e){
const bloodType = document.getElementById("bloodType").value;
e.preventDefault();
console.log("working");
console.log(bloodType, "working");
ipcRenderer.send('Request:bloodType', bloodType);
}
let bloodType;
window.onload = function(){
bloodType = document.getElementById("bloodType").value;
}
function submitForm(e){
e.preventDefault();
console.log("working");
console.log(bloodType, "working");
ipcRenderer.send('Request:bloodType', bloodType);
}
当你使用const
时,你的变量将被限制在它声明的函数范围内。这意味着您无法在bloodType
回调函数之外访问window.onload
。
相反,一个可能的解决方案可能是使bloodType
成为一个全局变量,然后在你的onload
回调中设置它的值,如下所示:
let bloodType;
window.onload = function(){
bloodType = document.getElementById("bloodType").value;
}
这样,您可以通过所有功能访问bloodType
,只需要查询DOM一次。
正如其他人所提到的,你需要使用bloodType
或window.onload
函数在let
函数之外定义submitForm
。
function submitForm(e) {
let bloodType = document.getElementById("bloodType").value;
e.preventDefault();
console.log("working");
console.log(bloodType, "working");
ipcRenderer.send('Request:bloodType', bloodType);
}
这里有趣的是你在bloodType
中使用的submitForm
变量不会引发参考错误。因为bloodType
指的是id=bloodType
的实际输入元素。
如果你有一个元素
<div id="example">some text</div>
example.innerHTML
返回some text
而无需手动创建let example = document.getElementById("example")
变量
所以,如果你用你现有的代码做bloodType.value
,那就行了。但是,你应该使用document.getElementById("bloodType").value