0

可能重复:
使用 javascript 获取实际的 HTML 值

所以我在这里有两个问题。让我先解释一下我要做什么。我有一个页面上的值会发生变化,但是我想在它们更改之前获取值,保留它们,然后一旦按下按钮,将 html 更改为原始 html。现在首先我最大的问题是,当我尝试取消注释 initial2 函数时,它只是不起作用。它把我带到了网页,然后由于某种原因,html url 试图改变,它说它找不到页面。第二个,对我来说更容易理解的问题是函数 previousaccept 我无法使用来自 previousnames 函数的值。

function previousnames()
{
name= document.getElementById('name').innerHTML;
imagetitle= document.getElementById('imagetitle').innerHTML;
location=document.getElementById('location').innerHTML;
similarities = document.getElementById('similarities').innerHTML;
type = document.getElementById('type').innerHTML;
cost = document.getElementById('cost').innerHTML;
date = document.getElementById('date').innerHTML;
pictureid = document.getElementById('pictureid').src;
}

function previousaccept(name,imagetitle,location,similarities,value,type,cost,date,pictureid)
{
document.getElementById('name').innerHTML = name;
document.getElementById('location').innerHTML = location;
document.getElementById('similarities').innerHTML = similarities;
document.getElementById('type').innerHTML = type;
document.getElementById('cost').innerHTML = cost;
document.getElementById('date').innerHTML = date;
window.alert(pictureid);
document.getElementById('pictureid').src = pictureid;
}
window.onload=initial();
function initial()
{
myvalues;
previousnames;
}

/*
function initial2()
{
myvalues;
previousnames();
}*/
4

2 回答 2

1

如果您设置location(即window.location),则浏览器将转到新网页。这就是您在previousnames()此行的函数中所做的:

location=document.getElementById('location').innerHTML;

如果您尝试使用名为 的全局变量location,请给它一个尚未被浏览器使用的不同名称。

此外,您应该显式声明您打算在函数之外使用的任何全局变量,而不是像您这样使用隐式声明的变量,这会使您的代码很容易出错。

于 2012-12-02T22:15:48.910 回答
0

我认为这会做你想要的。关键是确保您尝试存储的变量的范围是函数可以访问它们。为此,我在函数dataStore的开头定义了一个空对象,并onload 函数中onload定义了另外两个函数。将所有存储的数据放在一个对象中很方便,并且避免了命名问题(例如上一个答案中提到的 window.location 问题。)

window.onload = function() {
    var dataStore = {};

    function getInitialData() {
        dataStore = {
            name: document.getElementById('name').innerHTML,
            imagetitle: document.getElementById('imagetitle').innerHTML,
            // and so on... 
        }
    }

    function resetData() {
        document.getElementById('name').innerHTML = dataStore.name;
        document.getElementById('imagetitle').innerHTML = dataStore.imagetitle;
        // and so on...
    }
    getInitialData();
    //... then later when you want to reset all the values
    resetData();
}​
于 2012-12-02T22:33:03.900 回答