Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 为什么从页面项设置变量会破坏我的Web worker?_Javascript_Html_Web Worker - Fatal编程技术网

Javascript 为什么从页面项设置变量会破坏我的Web worker?

Javascript 为什么从页面项设置变量会破坏我的Web worker?,javascript,html,web-worker,Javascript,Html,Web Worker,我有一个运行良好的web worker,直到我尝试设置一个传递给它的参数。代码是: //global variables var xRange = [-2.5, 1]; function startWorker() { if(typeof(Worker) !== "undefined") { if(typeof(w) == "undefined") { //xRange[0] = document.getElementById("xRange0"

我有一个运行良好的web worker,直到我尝试设置一个传递给它的参数。代码是:

//global variables
var xRange = [-2.5, 1];

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            //xRange[0] = document.getElementById("xRange0").value;
            //xRange[1] = document.getElementById("xRange1").value;
            w = new Worker("myWorker.js");
            w.postMessage({ "args": [xRange[0], xRange[1]] });
        }
        w.onmessage = function(event) {
          //Do something.
        };
    } else {
        //no ww support
    }
}

如果我取消对xRange[1]变量的注释,应用程序将按预期运行。但是,如果我取消对xRange[0]变量的注释,应用程序将不会产生预期的结果

我检查了HTML页面上的项目是否具有正确的ID。 我使用了alertxRange[0];设置数组后,它确认该值是输入到HTML页面项中的任何值

我完全不明白为什么这些线路中的一条能工作,而另一条不能

这是我的来源,因此您可以验证项目ID是否正确:

我注意到的另一件事是,如果我尝试从这个位置的页面项目中设置更多变量,图像的生成将从大约200ms增加到大约800ms。我只是想知道为什么仅仅访问页面项值就有如此大的性能损失


谢谢

如果我取消对xRange[1]变量的注释,应用程序将按预期运行。。那么,在这种情况下传递的实际值是什么?为什么web worker代码在使用这些值时失败?它可能是未定义的,或者是像12.34这样的字符串,这会导致问题。确保为不同的问题创建不同的帖子。它们具有相同的价值观。从页面项目中设置它们的目的是让用户能够更改它们。xRange[1]的初始值为1,页面项以值1开头。xRange[0]从-2.5开始,页面项设置为相同。正如我所提到的,在页面项中设置变量后,警告该变量的值将返回预期值-2.5。我考虑了它返回字符串的可能性,因为它是负数,但是我用与负数完全相同的方式设置了另一个值,它工作正常。非常困惑。它们不是相同的价值观,因为它们会导致相同的行为,或者问题的根本原因总是被错误识别。再次验证值:12.34可能看起来像12.34,但它是不同的值。不,不是相同的值。刚刚核实。在Chrome.interest中使用调试器和/或console.dir或console.log。它们都以字符串的形式传入,但javascript似乎足够聪明,可以处理转换,除非它在开始时有一个-。谢谢你的帮助!