Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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
包含jQuery对象的变量的作用域(通过选择器)不是全局的_Jquery_Global Variables - Fatal编程技术网

包含jQuery对象的变量的作用域(通过选择器)不是全局的

包含jQuery对象的变量的作用域(通过选择器)不是全局的,jquery,global-variables,Jquery,Global Variables,有人能告诉我为什么下面代码中$mytextarea的作用域没有扩展到getAnswerToo()函数中吗 getAnswer()之所以有效,是因为我显式地选择了要更新的元素。但是,尝试使用全局“handler”变量不起作用 我假设变量范围的问题与它持有jQuery对象的事实具体相关。另一个变量myurl工作正常 非常感谢任何帮助 var myurl = "php/getAnswer.php"; var $mytextarea = null; // a handler for the tex

有人能告诉我为什么下面代码中$mytextarea的作用域没有扩展到getAnswerToo()函数中吗

getAnswer()之所以有效,是因为我显式地选择了要更新的元素。但是,尝试使用全局“handler”变量不起作用

我假设变量范围的问题与它持有jQuery对象的事实具体相关。另一个变量myurl工作正常

非常感谢任何帮助

var myurl = "php/getAnswer.php";

var $mytextarea = null;  //  a handler for the textarea element
$mytextarea = $('textarea#mytextarea');

getAnswerToo();

    function getAnswer(){ // works

        var request = $.ajax({
          url: myurl,
          type: "POST",
          data: {question: questionId, user: userId},
          dataType: "html",
          success: function(data) {
            $('textarea#mytextarea').val(unescape(data));
          }
        });

    }

    function getAnswerToo(){ // doesn't work

        var request = $.ajax({
          url: myurl,
          type: "POST",
          data: {question: questionId, user: userId},
          dataType: "html",
          success: function(data) {
            $mytextarea.val(unescape(data));
          }
        });

    }
这个放在哪里

$mytextarea = $('textarea#mytextarea');
选择器在DOM初始化时工作。 这应该起作用:

$(function() {     
   $mytextarea = $('textarea#mytextarea'); 
   getAnswerToo();
});

$('textarea#mytextarea')
返回空数组,因为DOM尚未初始化。在DOM准备就绪后,将调用整个代码,并在代码块中封装整个代码。

当然感谢Aktee和Amareswar!当您记住jQuery选择器只能在DOM初始化后引用对象时,这是完全有意义的。我会愚蠢地将代码放在documentready函数之外。