gpt4 book ai didi

javascript - 功能设置不正确

转载 作者:行者123 更新时间:2023-12-01 01:38:06 25 4
gpt4 key购买 nike

我有一个函数,可以在数据库中创建一条新记录并返回所创建记录的 ID。由此,我需要使用返回的 ID 的值将一个函数分配给一个选择。

.done(function(response) {
//console.log(siblings[1].dataset.contno);
var dbResponse = JSON.parse(response);

document.getElementById(runID).setAttribute('data-runid', dbResponse.id);

var newRunID = dbResponse.id;
var driverSelectID='driverSelectRun'+runCode;
//adding the onchange function with the correct ID to the dropdowns (the assignVehicle FUnction takes the runID which is unknown untill response)
(function(newRunID) {
document.getElementById(driverSelectID).onchange = function () {
assignDriver(newRunID);
}
})(newRunID);
(function(newRunID) {
document.getElementById(vehicleSelectID).onchange = function () {
assignVehicle(newRunID);
}
})(newRunID);

console.log(newRunID);
});

newRunID 的 console.log 为 1566,但此选择的 onchange 函数不包含新的运行 ID,它只是显示为 allocateVehicle(newRunID),而不是实际使用从数据库返回的值 (assignVehicle(1566)) 。我在代码的另一部分使用了完全相同的方法,效果很好。任何人都可以看出为什么这不能正常工作。

预先感谢您的回复!

<select id="driverSelectRun6">...</select>

这是选择的代码。它肯定是正确定位的,因为该函数是在没有争论的情况下设置的。

更新这是一个范围问题。 newRunID 是使用 var newRunID= 声明的,但这是在 .done 函数中声明的,因此属于本地范围而不是全局范围。删除 var 使其只是 newRunID= 有效,因为为未声明的变量赋值会隐式将其创建为全局变量(它成为全局对象的属性)

最佳答案

这里的问题是您正在将变量 newRunID 重新定义为参数,并且该参数实际上是从更改事件监听器返回的事件对象。

.onchange = function (newRunID) { 

应该是

.onchange = function () {

关于javascript - 功能设置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com