document.getElementsByClassName 为啥不是获取最新的数据
时间: 2023-08-11 07:55:46 浏览: 50
getElementsByClassName 方法是用于获取指定 class 名称的元素集合。它返回的是一个实时的 HTMLCollection 对象,表示当前文档中具有指定 class 名称的所有元素。这意味着它会实时地根据文档的变化来更新元素集合。
然而,getElementsByClassName 方法并不能获取最新的数据,因为它只是返回一个静态的集合,而不是一个动态的集合。它只会在调用该方法时查找一次文档中的元素,并将这些元素以集合的形式返回。如果之后文档中有新的元素添加了指定的 class 名称,getElementsByClassName 方法并不会自动更新返回的集合。
如果你希望获取最新的数据,可以考虑使用其他方法,比如使用 querySelectorAll 方法配合 CSS 选择器来获取指定 class 名称的元素集合。或者,你可以手动更新集合,比如在文档变化后重新调用 getElementsByClassName 方法来获取最新的元素集合。
相关问题
const tbody = document.getElementById("tbody"); const img = document.getElementById("img"); const form = layui.form; const username = document.getElementsByName("username")[0]; let recycleIds = []; getList(); const aaa=document.getElementsByClassName("aaa")[0] aaa.onclick=function () { const name = username.value; if (name) { $.getJSON("/attendance/search/"+name, {}, function (data) { f1(data); }); } else { getList(); } return false; }
这段代码是用 JavaScript 和 layui 框架来实现一个具有搜索功能的表格页面,其中包括一个表格 tbody 和一个图片 img,以及一个表单 form 和一个输入框 username。在页面加载时,会调用 getList() 方法来获取数据列表。当用户在输入框中输入姓名并点击搜索按钮时,会通过 AJAX 请求向服务器发送搜索请求,并将搜索结果渲染在表格中。如果搜索框为空,则会重新加载完整的数据列表。另外,代码还添加了一个点击事件监听器,当用户点击 aaa 元素时会触发搜索操作。
/* 温湿度检测 */ var count = 0; var text = "温湿度检测数据:" async function connect() { try { const port = await navigator.serial.requestPort(); await port.open({ baudRate: document.getElementById("input_rate").value }); document.getElementById("output").innerHTML = "串口连接成功,开始接受数据:\n"; text = "温湿度检测数据:"; setProgressValue(0, 0); setProgressValue(0, 1); // 接收数据 const reader = port.readable.getReader(); let result = ''; while (true) { const { value, done } = await reader.read(); if (done) { console.log('Serial port closed'); break; } result += new TextDecoder().decode(value); if (result.endsWith('\n')) { ParseData(result.trim()); result = ''; } } } catch (error) { console.error('Error:', error); alert("串口未连接!"); location.reload(); } } // 解析单片机传输的数据 function ParseData(data) { count++; let HT = data.split(','); let H = HT[0].split('='); let T = HT[1].split('='); let SH = parseFloat(H[1]).toFixed(2); let ST = parseFloat(T[1]).toFixed(2); document.getElementById("output").innerHTML += "NO." + count + ":" + SH + "%" + "," + ST + "℃\n"; document.getElementById("output").scrollTop = document.getElementById("output").scrollHeight; setProgressValue(SH, 0); setProgressValue(ST, 1); text += "\n\n"; text += "NO." + count + ": " + SH + "%" + " " + ST + "℃" + " " + getDate(); } // 设置显示数据 const setProgressValue = (num, index) => { document.getElementsByClassName('circle')[index].style['stroke-dashoffset'] = 628 - (628 / 100) * num; document.getElementsByClassName('text')[index].innerHTML = num; } // 获取时间 function getDate() { let currentDate = new Date(); let year = currentDate.getFullYear(); let month = ("0" + (currentDate.getMonth() + 1)).slice(-2); let day = ("0" + currentDate.getDate()).slice(-2); let hours = ("0" + currentDate.getHours()).slice(-2); let minutes = ("0" + currentDate.getMinutes()).slice(-2); let seconds = ("0" + currentDate.getSeconds()).slice(-2); let formattedDate = year + "-" + month + "-" + day + "_" + hours + ":" + minutes + ":" + seconds; return formattedDate.toString(); } // 保存数据 function savedata() { if (text.split(/\r\n|\r|\n/).length == 1) { alert("当前没有数据!"); return; } let filename = "DHT11_Data-" + getDate() + ".txt"; let blob = new Blob([text], { type: 'text/plain' }); let url = URL.createObjectURL(blob); let link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); }解释dai'm
这是一段 JavaScript 代码,用于连接串口并接收温湿度检测数据。首先,它定义了一个计数器和一个文本变量,用于存储接收到的数据。然后,它定义了一个connect函数,其中包含串口连接和数据接收的逻辑。在connect函数中,它通过navigator.serial.requestPort()方法请求串口连接,然后通过port.open()方法打开串口连接。接着,它通过port.readable.getReader()方法获取数据读取器,然后进入一个while循环,不断读取数据并通过ParseData函数进行解析和处理。在ParseData函数中,它先将接收到的数据按照逗号分隔符进行分割,然后再按照等号分隔符进行分割,得到温度和湿度的值。接着,它将解析后的数据显示在页面上,并更新温度和湿度的进度条。最后,它通过getDate函数获取当前时间,并将解析后的数据保存到文本变量中。最后,它定义了一个savedata函数,用于将保存的数据以文本文件的形式下载到本地。