所以我这里有两个问题。让我先解释一下我要做的事情。我有一个页面,其值已更改,但我想在更改之前获取值,保留它们,然后一旦按下按钮,将html更改为原始html。首先,我最大的问题是当我尝试取消注释initial2函数时,它只是不起作用。它带我到网页然后由于某种原因html网址尝试更改,它说它找不到页面。对我来说第二个也是更容易理解的问题是,函数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();
}*/
答案 0 :(得分:1)
如果设置location
(window.location),则浏览器将转到新网页。这就是你在previousnames()
函数中用这一行做的事情:
location=document.getElementById('location').innerHTML;
如果您正在尝试使用名为location
的全局变量,请为其指定一个尚未被浏览器使用的其他名称。
此外,您应该显式声明要在函数之外使用的任何全局变量,而不是像使用隐式声明的变量那样使代码容易出错。
答案 1 :(得分: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();
}