Javascript getElementByID始终返回未定义的值
我现在得到了标题中显示的错误,我已经尝试用stackoverflow上的许多解决方案来解决这个问题,但是到目前为止还没有一个解决方案,如果有任何建议/帮助,我将不胜感激Javascript getElementByID始终返回未定义的值,javascript,html,dom,electron,Javascript,Html,Dom,Electron,我现在得到了标题中显示的错误,我已经尝试用stackoverflow上的许多解决方案来解决这个问题,但是到目前为止还没有一个解决方案,如果有任何建议/帮助,我将不胜感激 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title> Donor Request </title> </head>
<!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>
捐助者请求
血型
位置
要求
const{ipcrender}=require('electron').remote;
const form=document.querySelector('form')
格式。添加的列表器(“提交”,提交格式);
window.onload=函数(){
const bloodType=document.getElementById(“bloodType”).value;
}
函数提交形式(e){
e、 预防默认值();
控制台日志(“工作”);
控制台日志(血型,“工作”);
send('Request:bloodType',bloodType);
}
将血型
声明为var
或让
在onLoad之外,使其在另一个方法内可访问,或从submitForm
内部获取
function submitForm(e){
const bloodType = document.getElementById("bloodType").value;
e.preventDefault();
console.log("working");
console.log(bloodType, "working");
ipcRenderer.send('Request:bloodType', bloodType);
}
使用
const
时,变量将被限制在其声明的函数范围内。这意味着您无法在窗口外访问bloodType
。onload
回调函数
相反,一种可能的解决方案是将bloodType
设置为全局变量,然后在onload
回调中设置其值,如下所示:
let bloodType;
window.onload = function(){
bloodType = document.getElementById("bloodType").value;
}
通过这种方式,您可以通过所有函数访问
bloodType
,只需查询DOM一次。正如其他人所提到的,您需要在窗口外部定义bloodType
。使用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);
}
这里有趣的是,在submitForm
中使用的bloodType
变量不会抛出引用错误。因为bloodType
指的是id=bloodType的实际输入元素
如果你有一个元素
<div id="example">some text</div>
一些文本
example.innerHTML
返回一些文本
,而不必手动创建let example=document.getElementById(“example”)
变量
因此,如果您要使用现有代码执行bloodType.value
,它将起作用。但是,您应该使用document.getElementById(“bloodType”).value
更多信息:但是这里没有任何
getElementByID
代码。@MadhawaPriyashantha我看到我不小心复制了旧版本,我更新了问题。它不返回数组。我将答案更改为状态arrayLike
<div id="example">some text</div>