如何使变量保留旧信息?

时间:2014-02-24 05:46:00

标签: javascript html

例如,假设我将变量定义为等同于键入textarea的某些文本,然后将textarea中的文本更改为新值。我希望能够保留最初存储在变量中的旧值,并将其与存储的新值进行比较。我想也许我可以用两个变量做到这一点。我想用代码做的是找出我最初输入的值是否与我输入的新值相同。这是一次尝试。我不希望下面的代码完全可以工作。这只是为了让我知道自己想做什么。

<textarea id="mytext"></textarea>
<input onclick="MyFunction();" type="submit" value="submit"/> 

function MyFunction(){
    var MyVariable = document.getElementById("mytext").value();
    var MyVariable2 = document.getElementById("mytext").value();
    if(MyVariable === MyVariable2){
        alert('the text is the same');
    }
    else
    {
        alert('the text is different');
    }
}

http://jsfiddle.net/2eFD2/4/

6 个答案:

答案 0 :(得分:2)

  

如何使变量保留旧信息?

不向其分配新信息。

只需在函数外部创建一个变量,以便它在函数调用之间保持不变,并且只有在它没有值时才分配给它:

var previousValue = null;

function MyFunction(){
    var currentValue = document.getElementById("mytext").value;

    if (previousValue === currentValue){
        alert('the text is the same');
    }
    else
    {
        alert('the text is different');
    }

    if (previousValue == null) {
        // only executed the first time the function is called
        previousValue = currentValue; 
    }
}
  

我需要带有旧信息的变量落后于第二个变量,并且在给出新信息之前,第二个变量具有信息。

然后,您只需将新值分配给变量:

var previousValue = null;

function MyFunction(){

    var currentValue = document.getElementById("mytext").value;

    if(previousValue === currentValue){
        alert('the text is the same');
    }
    else
    {
        alert('the text is different');
    }

    previousValue = currentValue;
}

答案 1 :(得分:0)

以下是两种让人想起的方法:

  1. 如果你有JQuery,你可以使用data storage来存储旧值,例如将它附加到文本框;
  2. 如果您想以更简单的方式执行此操作,您还可以为要跟踪的每个文本框设置隐藏文本框。每次主文本框值发生变化时,您都可以保存&#34;隐藏文本框中的旧值。
  3. 无论你做什么,只要避免将旧值存储在全局变量中,因为这会污染你的全局命名空间,这绝不是一件好事。

答案 2 :(得分:0)

您可以使用HTML5数据属性:

var textArea = document.getElementById("myText");
textArea.setAttribute("data-old", textArea.value());

并使用以下方法检索它:

document.getElementById.getAttribute("data-old");

答案 3 :(得分:0)

你只需要将旧的变量数据分配给新的变量,这就是小提琴:

尝试此代码:var MyVariable2 = null;

function MyFunction(){
    var MyVariable = $("#mytext").val();

    if (MyVariable2 == null) {
        MyVariable2 = MyVariable; 
    }

    if(MyVariable === MyVariable2){
        alert('the text is the same');
    }
    else
    {
        alert('the text is different');
    }
}

这里是小提琴:http://jsfiddle.net/2eFD2/6/

答案 4 :(得分:0)

我已经做了类似的事情,我正在使用旧值来检查表单是否得到更新,并且在提交时我正在删除未更改的输入

HTML:

<form id="myform">
    <input type="text" id="Name" data-initial="Foo" value="Foo" />
    <input type="text" id="Location" data-initial="Bar" value="Bar" />
    <input type="submit" value="Submit" />
</form>

JS:

$("#myform").submit( function() {
$(this).find("input").filter( function() {
    $this = $(this);
    return $this.data("initial") == $this.val();
}).remove();
});

答案 5 :(得分:-1)

您可以使用HTML5 data属性或localStorage来保存该值。

数据属性:

var myText = document.getElementById("myText");
myText.setAttribute("data-old", myText.value); //Set
myText.getAttribute("data-old");               //Get

localStorage的:

localStorage.setItem("myText", document.getElementById("myText").value); //Set
localStorage.getItem("myText");                                          //Get