Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementByID始终返回未定义的值_Javascript_Html_Dom_Electron - Fatal编程技术网

Javascript getElementByID始终返回未定义的值

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>

我现在得到了标题中显示的错误,我已经尝试用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>

捐助者请求
血型
位置
要求
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>