Javascript get对象在另一个if语句中
javascript get object inside another if statement
是否可以在另一个if语句中访问对象?因为情况就是这样。
我有一个编辑按钮,它将<div>
设置为contenteditable
。所以如果我按下取消按钮,<div>
内的文本也应该重置。现在我的javascript是这样的
$('.class').on('click','.etc',function(){
var orig = {};
$a = $(this).('.etc').text().trim(); // just getting the text of the button
if($a == "Edit") // just checking if edit button
{
orig.text = $(this).find('original-text').text(); // should store the original text
}
else if ($a == "Cancel")
{
// the div must be set to the original text
alert(orig.text); // undefined
}
});
我真的很困惑
在if
和else
条件都可以访问的范围内声明变量,或者在全局范围内声明变量。但是在你尝试访问它的属性之前,要确保它已经初始化了!
var orig = {text:""};
$('.class').on('click','.etc',function(){
if($a == "Edit") // just checking if edit button
{
orig.text = $(this).find('original-text').text();
}
else if ($a == "Cancel")
{
alert(orig.text);
}
});
问题在变量orig
的范围内。JS有函数级词法作用域。
所以回答你的标题问题,是的,你可以访问在if
中的一个在else
中创建的变量,只要else
肯定发生在if至少发生一次之后。但这并不是导致你出现问题的真正原因。
你的问题是你试图在onclick函数之外持久化这个变量。当该函数结束时,变量的生命周期也随之结束。简单的修复方法是在函数外部声明它并使用JS闭包。
var orig = {};
$('.class').on('click', function () {
if ($(this).text() == "Store") {
orig.text = $("#display").text();
} else if ($(this).text() == "Cancel") {
alert(orig.text);
}
});
我不得不调整一下,因为我不知道你的完整HTML,但它可以工作。
为了避免全局变量的不良做法,您可以为整个内容创建一个封闭作用域,如下所示:
(function () {
var orig = {};
$('.class').on('click', function () {
if ($(this).text() == "Store") {
orig.text = $("#display").text();
} else if ($(this).text() == "Cancel") {
alert(orig.text);
}
});
})();
在实际操作中
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环