我试图编写一个小函数,它从html中获取div元素,隐藏它,分配一个值和一个变量名,然后将其解析到函数中以检查指定的月份(值)是否等于本月。我认为它不起作用的原因是'this'被转换为一个对象Object而它没有存储我解析到它的变量的值。
var currentMonth = (new Date).getMonth() + 1;
var valentinesdiv = $('#valentinesmenu');
$(valentinesdiv).hide();
valentinesdiv = 5;
$.fn.datechecker1 = function () {
if ($(this) == currentMonth) {
this.show();
} else {
alert(this);
}
};
$(valentinesdiv).datechecker1();
它直接进入警告框并输出对象,因此当我解析它时,它不会保存变量的值。
答案 0 :(得分:2)
我看到的一些问题是您尝试在纯JS show()
对象上使用jQuery this
,并且您在警报框中看到Object object
因为{ {1}}实际上是传递对象而不是对象内的某个值。
您最想要的是:
alert(this)
答案 1 :(得分:1)
var element = $(this), value = element.val();
if(value == currentMonth){
element.show();
} else {
alert(value);
}
假设实现是在特定js
设置变量x
:5
:element
;然后检查变量是否等于变量#valentinesmenu
。
currentMonth
:x
设置为5
的{{1}}; text
检查元素是否已被调用,#valentinesmenu
等于$.fn.datechecker1
;
如果为true,请在text
元素上调用currentMonth
,如果不是,请将.show()
记录到this
不确定这是否是预期的结果或要求; this.text(), currentMonth, x
以下的假设基于以上假设
尝试使用console
js
.text()
答案 2 :(得分:0)
问题是你给变量valentinesdiv
一个新值。当你这样做时,它会忘记$("valentinesmenu")
的引用,当你以后使用它时,你实际上是这样做的:
$(5).datechecker1();
这是一种你可以做你想做的事情(JSFiddle):
var currentMonth = (new Date).getMonth() + 1;
var valentinesdiv = $('#valentinesmenu');
$(valentinesdiv).hide();
$.fn.datechecker1 = function(compare) {
if(compare == currentMonth){
$(this).show();
} else {
alert(this);
}
};
valentinesdiv.datechecker1(5);