试图使在私有范围内动态更改的变量成为全局变量
Trying to make a variable that is being changed dynamically in a private scope global
我想我的标题是对的,但这就是我想要做的
$(document).ready(function(){
var oVars = {};
var withones;
etc //didnt work in what of my attempts to declare variables here so didnt cont.
$('.checkboxes :checkbox').click(function(){
var $this = $(this);
if($(this).is(':checked')){
oVars[this.id] = true;
console.log( oVars)
}
if(!$this.is(':checked')){
oVars[this.id] = false;
console.log( oVars)
}
在这一点上,我的理解是 oVars 就像
oVars{
withones : true,
withoutOnes : false, //if unchecked
dispReg :true //if checked
}
当我选中复选框时,我看到属性值发生了变化
我希望能够(全局)做这样的事情:
var withOnes = oVars['withones'];
var withoutOnes = oVars['withoutOnes'];
etc;
我想在全局范围内声明这些变量,并且我希望它们的值根据 true 或 false 进行更改,因为这是在 if $(this).is(':checked') 中分配的内容以演示哪个被选中。我想这样做的原因是我想创建一个参数是更新值的函数。
});
我会在代码的其他地方编写如下代码
if(withOnes){ // I want withOnes to be true if checked false if unchecked
process code if true
}
我试着做了如下的事情。请帮我弄清楚如何更改这些变量值,以便我可以在代码的其他地方使用变量
if(withones = true){
console.log("withones checked")
}
if(withones = false){
console.log("withones unchecked")
}
但每次更改复选框时只显示 "withones checked"。
});
HTML:
<div>
<div class="checkboxes">
<div class="dificulty">
<label for="withones" class="labelOuter" >
<input type="checkbox" id= "withones" class = "regular-checkbox big-checkbox"><label for="withones"></label> <span class="label">With ones</span>
</label>
<label for="withoutOnes" class="labelOuter" >
<input type="checkbox" id = "withoutOnes" class= "regular-checkbox big-checkbox"><label for="withoutOnes"></label><span class="label">Without ones</span>
</label>
</div> <!-- dificulty -->
<div class="view">
<label for="dispReg" class="labelOuter" >
<input type="checkbox" id = "dispReg" class= "regular-checkbox big-checkbox"><label for="dispReg"></label><span class="label">Display cash register</span>
</label>
<label for="hideReg" class="labelOuter" >
<input type="checkbox" id = "hideReg" class= "regular-checkbox big-checkbox"><label for="hideReg"></label><span class="label" title ="gets rid of image">hide cash register</span>
</label>
<label for="hideItems" class="labelOuter" >
<input type="checkbox" id = "hideItems" class= "regular-checkbox big-checkbox"><label for="hideItems"></label><span class="label">hide items</span>
</label>
<label for="showItems" class="labelOuter" >
<input type="checkbox" id = "showItems" class= "regular-checkbox big-checkbox"><label for="showItems"></label><span class="label">show items</span>
</label>
</div> <!-- view -->
</div>
</div>
</div>
window
-对象可能正是您想要的。
看看那个:
function setTest() {
window.test = 'hello';
}
setTest();
document.write(test); // gives 'hello'
我不知道其他上下文,但在 Internet 浏览器的上下文中,window
-对象及其所有成员随处可用。虽然通过 window
变量访问它们比直接访问它们更优雅。
我想说的是:
不做:
test = 'hello';
alert(test);
改为:
window.test = 'hello';
alert(window.test);
尽管如此,它们实际上是完全相同的意思!(如果没有隐藏的话var test;
)
但是如果 var test;
在范围内的任何地方被调用,第一个例子将完全改变它的意思。
另一方面,无论您是否添加 var test;
,第二个示例都将保持其含义。
我想我的标题是对的,但这就是我想要做的
$(document).ready(function(){
var oVars = {};
var withones;
etc //didnt work in what of my attempts to declare variables here so didnt cont.
$('.checkboxes :checkbox').click(function(){
var $this = $(this);
if($(this).is(':checked')){
oVars[this.id] = true;
console.log( oVars)
}
if(!$this.is(':checked')){
oVars[this.id] = false;
console.log( oVars)
}
在这一点上,我的理解是 oVars 就像
oVars{
withones : true,
withoutOnes : false, //if unchecked
dispReg :true //if checked
}
当我选中复选框时,我看到属性值发生了变化
我希望能够(全局)做这样的事情:
var withOnes = oVars['withones'];
var withoutOnes = oVars['withoutOnes'];
etc;
我想在全局范围内声明这些变量,并且我希望它们的值根据 true 或 false 进行更改,因为这是在 if $(this).is(':checked') 中分配的内容以演示哪个被选中。我想这样做的原因是我想创建一个参数是更新值的函数。
});
我会在代码的其他地方编写如下代码
if(withOnes){ // I want withOnes to be true if checked false if unchecked
process code if true
}
我试着做了如下的事情。请帮我弄清楚如何更改这些变量值,以便我可以在代码的其他地方使用变量
if(withones = true){
console.log("withones checked")
}
if(withones = false){
console.log("withones unchecked")
}
但每次更改复选框时只显示 "withones checked"。
});
HTML:
<div>
<div class="checkboxes">
<div class="dificulty">
<label for="withones" class="labelOuter" >
<input type="checkbox" id= "withones" class = "regular-checkbox big-checkbox"><label for="withones"></label> <span class="label">With ones</span>
</label>
<label for="withoutOnes" class="labelOuter" >
<input type="checkbox" id = "withoutOnes" class= "regular-checkbox big-checkbox"><label for="withoutOnes"></label><span class="label">Without ones</span>
</label>
</div> <!-- dificulty -->
<div class="view">
<label for="dispReg" class="labelOuter" >
<input type="checkbox" id = "dispReg" class= "regular-checkbox big-checkbox"><label for="dispReg"></label><span class="label">Display cash register</span>
</label>
<label for="hideReg" class="labelOuter" >
<input type="checkbox" id = "hideReg" class= "regular-checkbox big-checkbox"><label for="hideReg"></label><span class="label" title ="gets rid of image">hide cash register</span>
</label>
<label for="hideItems" class="labelOuter" >
<input type="checkbox" id = "hideItems" class= "regular-checkbox big-checkbox"><label for="hideItems"></label><span class="label">hide items</span>
</label>
<label for="showItems" class="labelOuter" >
<input type="checkbox" id = "showItems" class= "regular-checkbox big-checkbox"><label for="showItems"></label><span class="label">show items</span>
</label>
</div> <!-- view -->
</div>
</div>
</div>
window
-对象可能正是您想要的。
看看那个:
function setTest() {
window.test = 'hello';
}
setTest();
document.write(test); // gives 'hello'
我不知道其他上下文,但在 Internet 浏览器的上下文中,window
-对象及其所有成员随处可用。虽然通过 window
变量访问它们比直接访问它们更优雅。
我想说的是:
不做:
test = 'hello';
alert(test);
改为:
window.test = 'hello';
alert(window.test);
尽管如此,它们实际上是完全相同的意思!(如果没有隐藏的话var test;
)
但是如果 var test;
在范围内的任何地方被调用,第一个例子将完全改变它的意思。
另一方面,无论您是否添加 var test;
,第二个示例都将保持其含义。