Javascript 无法从select获取值(未定义值)

Javascript 无法从select获取值(未定义值),javascript,opentok,Javascript,Opentok,我试图从我拥有的选择选项列表中获取一个值,该值也是通过javascript生成的,但由于某种原因,我无法检索它 var a, i, v; v = document.querySelector('#video-setting'); a = document.querySelector('#audio-setting'); i = 0; while (i < audioInputDevices.length) { a.innerHTML += '<option value='

我试图从我拥有的选择选项列表中获取一个值,该值也是通过javascript生成的,但由于某种原因,我无法检索它

var a, i, v;

v = document.querySelector('#video-setting');
a = document.querySelector('#audio-setting');

i = 0;

while (i < audioInputDevices.length) {
  a.innerHTML += '<option value=' + audioInputDevices[i].deviceId + '>' + audioInputDevices[i].label + '</option>';
  i++;
}

i = 0;

while (i < videoInputDevices.length) {
  v.innerHTML += '<option value=' + videoInputDevices[i].deviceId + '>' + videoInputDevices[i].label + '</option>';
  i++;
}

return;
var publisherOptions;

$(document).ready(function() {
  var au, audioValue, vi, videoValue;
  au = document.getElementById("audio-setting");
  audioValue = au.options[au.selectedIndex].value;
  vi = document.getElementById("video-setting");
  videoValue = vi.options[vi.selectedIndex].value;
});

publisherOptions = {
  audioSource: audioValue,
  videoSource: videoValue
};

因为您正在匿名函数中定义变量。因此,它们对外部范围代码不可见

$(document).ready(function() {
  var au, audioValue, vi, videoValue; //this defines local scope variables
                                      //won't be visible outside this function
  ...
});
要解决这个问题,因为publisherOptions变量是全局变量,所以只需在ready回调中设置publisherOptions变量

$(document).ready(function() {
    ...
    publisherOptions = {
        audioSource: audioValue,
        videoSource: videoValue
    };
});

因为您正在匿名函数中定义变量。因此,它们对外部范围代码不可见

$(document).ready(function() {
  var au, audioValue, vi, videoValue; //this defines local scope variables
                                      //won't be visible outside this function
  ...
});
要解决这个问题,因为publisherOptions变量是全局变量,所以只需在ready回调中设置publisherOptions变量

$(document).ready(function() {
    ...
    publisherOptions = {
        audioSource: audioValue,
        videoSource: videoValue
    };
});

因为您正在匿名函数中定义变量。因此,它们对外部范围代码不可见

$(document).ready(function() {
  var au, audioValue, vi, videoValue; //this defines local scope variables
                                      //won't be visible outside this function
  ...
});
要解决这个问题,因为publisherOptions变量是全局变量,所以只需在ready回调中设置publisherOptions变量

$(document).ready(function() {
    ...
    publisherOptions = {
        audioSource: audioValue,
        videoSource: videoValue
    };
});

因为您正在匿名函数中定义变量。因此,它们对外部范围代码不可见

$(document).ready(function() {
  var au, audioValue, vi, videoValue; //this defines local scope variables
                                      //won't be visible outside this function
  ...
});
要解决这个问题,因为publisherOptions变量是全局变量,所以只需在ready回调中设置publisherOptions变量

$(document).ready(function() {
    ...
    publisherOptions = {
        audioSource: audioValue,
        videoSource: videoValue
    };
});

jqueryready函数在使用普通JavaScript之前首先启动。因此,当设置audioValue很累时,它将是未定义的。您可以将JavaScript封装在闭包中,也可以将其放入jqueryready语句中


这应该是可行的。

您的jqueryready函数在您的普通JavaScript之前首先启动。因此,当设置audioValue很累时,它将是未定义的。您可以将JavaScript封装在闭包中,也可以将其放入jqueryready语句中


这应该是可行的。

您的jqueryready函数在您的普通JavaScript之前首先启动。因此,当设置audioValue很累时,它将是未定义的。您可以将JavaScript封装在闭包中,也可以将其放入jqueryready语句中


这应该是可行的。

您的jqueryready函数在您的普通JavaScript之前首先启动。因此,当设置audioValue很累时,它将是未定义的。您可以将JavaScript封装在闭包中,也可以将其放入jqueryready语句中


这应该行。

您在document.ready回调中声明了“audioValue”和“videoValue”,然后尝试将它们分配给完全不同范围内的对象文字。.您在document.ready回调中声明了“audioValue”和“videoValue”,然后尝试将它们分配给完全不同范围内的对象文字..在document.ready回调中声明了“audioValue”和“videoValue”,然后尝试将它们分配给完全不同范围内的对象文字..在document.ready回调中声明了“audioValue”和“videoValue”,然后你试图把它们分配给一个完全不同的作用域中的对象文字。问题是如果我把publisherOptions放在函数中,我就有了依赖于它的东西。邪恶的圈子。当我试图删除准备就绪的文档时,我无法读取的属性“value”undefined@SebastianJenningsAlmnes,您的发布是全局范围的,依赖它的任何人都可以访问它。只是不要将
var publisherOptions
行放在就绪回调中,让它保持原样。@PatrickEvans当我这样做时,我会得到“Uncaught TypeError:无法读取未定义的属性“value”,它指向audioValue中的我的值variable@SebastianJenningsAlmnes,那么听起来好像代码在
.ready()之前运行
调用回调时,应该在调用后运行。问题是,如果我在函数中放入publisherOptions,我就有了依赖于它的内容。邪恶的圈子。当我试图删除准备就绪的文档时,我无法读取的属性“value”undefined@SebastianJenningsAlmnes,您的发布是全局范围的,依赖它的任何人都可以访问它。只是不要将
var publisherOptions
行放在就绪回调中,让它保持原样。@PatrickEvans当我这样做时,我会得到“Uncaught TypeError:无法读取未定义的属性“value”,它指向audioValue中的我的值variable@SebastianJenningsAlmnes,那么听起来好像代码在
.ready()之前运行
调用回调时,应该在调用后运行。问题是,如果我在函数中放入publisherOptions,我就有了依赖于它的内容。邪恶的圈子。当我试图删除准备就绪的文档时,我无法读取的属性“value”undefined@SebastianJenningsAlmnes,您的发布是全局范围的,依赖它的任何人都可以访问它。只是不要将
var publisherOptions
行放在就绪回调中,让它保持原样。@PatrickEvans当我这样做时,我会得到“Uncaught TypeError:无法读取未定义的属性“value”,它指向audioValue中的我的值variable@SebastianJenningsAlmnes,那么听起来好像代码在
.ready()之前运行
调用回调时,应该在调用后运行。问题是,如果我在函数中放入publisherOptions,我就有了依赖于它的内容。邪恶的圈子。当我试图删除准备就绪的文档时,我无法读取的属性“value”undefined@SebastianJenningsAlmnes,您的发布是全局范围的,依赖它的任何人都可以访问它。只是不要将
var publisherOptions
行放在就绪回调中,让它保持原样。@PatrickEvans当我这样做时,我会得到“Uncaught TypeError:无法读取未定义的属性“value”,它指向audioValue中的我的值variable@SebastianJenningsAlmnes,那么听起来好像代码在
.ready()之前运行
调用回调时,应在