javascript - javascript for循环没有为类中的每个按钮打印正确的数据集
问题描述
我正在使用烧瓶、javascript 和 socketio 创建一个投票网络应用程序。我正在遍历属于vote
该类的所有按钮。我正在尝试获取他们的数据投票值。出于某种原因,当单击按钮时打印 dataset.vote(如下面的函数中指定)时,它会在单击两个按钮时输出最后一个按钮的 dataset.vote。有人可以指出我的错误并帮助我解决它吗?如果您需要我指定某些内容,我很乐意这样做。
烧瓶:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
sock =SocketIO(app)
@app.route("/")
def index():
return render_template("index.html")
@sock.on("cast_vote")
def f(data):
vote = data["vote"]
print(vote)
emit("vote_result", {"vote":vote}, broadcast=True)
HTML:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<title>SocketIO</title>
<script src="https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.js"></script>
<script src="{{url_for('static', filename='main.js')}}"></script>
</head>
<body>
<ul id="main"></ul>
<button class="vote" data-vote="no">No</button>
<button class="vote" data-vote="yes">Yes</button>
</body>
</html>
Javascript:
document.addEventListener("DOMContentLoaded", ()=>{
var sock = io.connect(location.protocol+"//"+document.domain+":"+location.port)
sock.on("connect", ()=>{
buttons = document.querySelectorAll(".vote");
let i;
for(i=0; i<buttons.length; ++i){
button = buttons[i];
button.onclick = () => {
console.log(button.dataset.vote);
let vote = button.dataset.vote;
console.log(vote);
sock.emit("cast_vote", {"vote":vote});
};
}
});
sock.on("vote_result", (data)=>{
newli = document.createElement("li");
newli.innerHTML=data["vote"]
document.querySelector("#main").append(newli);
});
});
输出:
yes
yes
yes
yes
解决方案
您将一些变量声明为global
一个,您应该避免这种情况。
尝试更改此代码
for(i=0; i<buttons.length; ++i){
button = buttons[i];
对这个
for(i=0; i<buttons.length; ++i){
let button = buttons[i];
还要查看您的代码并添加var/let/const
到您使用的所有其他变量中。
推荐阅读
- javascript - 使用对象键将对象的javascript数组划分为多个数组
- reactjs - 错误类型无效...使用“react-switch”时出错
- python - Kivy 文本编辑器输入未显示
- sql - Oracle SQL - 使用一个表中的列名作为另一个表中的查询参数
- python - 挂在视图方法
- python - 如何在 django 的同一个应用程序中使用不同的数据库?
- linux - Linux:我想获取 column3 的前 10 条记录。该列有一些缺失的数据。我已经对文件进行了排序
- python - 在 sklearn 中训练多个班级
- excel - 从不同的列中获取唯一值并粘贴到另一个工作表中
- html - ckeditor内容中的角度图像大小问题