2

谁能告诉我为什么下面代码中 $mytextarea 的范围没有扩展到 getAnswerToo() 函数中?

getAnswer() 有效,因为我明确选择了要更新的元素。但是,尝试使用全局“处理程序”变量是行不通的。

我假设这个变量范围的问题与它拥有一个 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));
          }
        });

    }
4

2 回答 2

1

这是放在哪里的?

$mytextarea = $('textarea#mytextarea');

选择器在您的 DOM 初始化时工作。这应该有效:

$(function() {     
   $mytextarea = $('textarea#mytextarea'); 
   getAnswerToo();
});
于 2012-10-11T17:42:44.063 回答
1

$('textarea#mytextarea')返回空数组,因为 DOM 尚未初始化。用 in 代码块包装整个代码 while 将在 DOM 准备好后调用。

于 2012-10-11T17:46:20.080 回答