Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 在实际函数之前声明$(此)变量_Javascript_Jquery_Html_Variables_Global Variables - Fatal编程技术网

Javascript 在实际函数之前声明$(此)变量

Javascript 在实际函数之前声明$(此)变量,javascript,jquery,html,variables,global-variables,Javascript,Jquery,Html,Variables,Global Variables,我必须根据一些元素的ID进行一系列检查,但这些都有一点不同 所以我做了一系列函数,而不是总是重复$(这个)。孩子们…我想要一个简短的变量。但是当我在实际函数之外声明它时,我得到了未定义的 代码不是应该像这样工作吗:嗯,有一个变量使用这个,现在这是一个列表,然后我将变成$('ul')。孩子们…? 它遵循什么逻辑?我应该如何修复它 问题的缩小示例: $(文档).ready(函数(){ var thisID=$(this.attr('id'); 函数替换内容(id){ $('#'+id).html(

我必须根据一些元素的ID进行一系列检查,但这些都有一点不同

所以我做了一系列函数,而不是总是重复
$(这个)。孩子们…
我想要一个简短的变量。但是当我在实际函数之外声明它时,我得到了未定义的

代码不是应该像这样工作吗:嗯,有一个变量使用这个,现在这是一个列表,然后我将变成
$('ul')。孩子们…
? 它遵循什么逻辑?我应该如何修复它

问题的缩小示例:

$(文档).ready(函数(){
var thisID=$(this.attr('id');
函数替换内容(id){
$('#'+id).html('新内容,id为:'+thisID);
}
$('button')。在('click',function()上{
警报(thisID);
//替换内容(thisID);
替换内容(你好);
})
});

abc
按钮
这并不是“这个”的工作原理。当您将“this”存储在“$(document).ready”下时,它的引用将是“document”,而不是稍后的元素。“this”不完全是一个变量,而是该范围下当前元素的一个关键字

为了解决您的“问题”,如果您真的想改变,您可能想改变如下:

$(document).ready(function() {
  function getID(element) {
    return $(element).attr('id');
  }

  function replaceContent(id) {
    $('#' + id).html('new content, and the ID is: ' + id);
  }

  $('button').on('click', function() {
    var thisID = getID(this);
    replaceContent(thisID);
    replaceContent('hello');
  })
});

我想这就是你想要的。仅当您处于子项列表的范围/上下文中时,才能使用
。您还可以创建一个方法来传递不同的id,以便对给定的id执行逻辑。
//示例一
var hightLightItem=功能(div){
$(div).css(“color”,“blue”);//将其放在这里将引用窗口
}
高亮度项目(“一”);
//例二
var childs=$(“#一堆项目2”).childs();
childs.each(函数(){
$(this.css(“color”,“red”);//这里的this指的是.each()每次迭代时的子级
});

一个
两个
三
四
五
六
一个
两个
三
四
五
六

不能简单地声明
这个
,它存在于不同的上下文中,这取决于它在代码中的使用位置
这是文档中的
。ready函数指的是浏览器窗口对象
事件处理程序中的此
通常指的是单击/更改/提交的浏览器元素,这就是我认为您正在寻找的。@James但是,当它在函数中使用时,为什么它不成为已单击的事件处理程序(即使我声明它时它是窗口)?它不应该“再次检查”当前所指的内容吗?这就是我不理解的。不,它不会再次检查。此ID将始终具有窗口对象ID的值。如果将
thisID=this.id
放入按钮单击处理程序,则会将其更新为单击按钮的id。但是,该变量“不记得”它是如何初始化的。同样的方法,如果你做
var a=2;var b=a+1
如果更改
a
的值,则变量
b
不会更改。