是否可以访问另一个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
}
});
我真的迷失在这里
答案 0 :(得分:1)
将变量声明在cell.imageText.adjustsFontSizeToFitWidth = true
和if
条件可访问的范围内,或者可以在全局范围内。但在尝试访问其属性之前,请确保已初始化它!
else
答案 1 :(得分:0)
问题出在变量orig
的范围内。 JS具有功能级词汇范围。
所以要回答你的标题问题,是的,你可以访问在if
的{{1}}中的in中创建的变量,只要在if有else
之后肯定会发生else
发生过至少一次。但这并不是造成问题的原因。
您的问题是您试图将此变量保留在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,但it works。
<强>更新强> 为了避免全局变量的不良做法,您可以为整个事物创建一个封闭的范围:
(function () {
var orig = {};
$('.class').on('click', function () {
if ($(this).text() == "Store") {
orig.text = $("#display").text();
} else if ($(this).text() == "Cancel") {
alert(orig.text);
}
});
})();