如何使用其他函数的参数

时间:2012-12-02 22:12:10

标签: javascript html dom innerhtml

  

可能重复:
  Get actual HTML values using javascript

所以我这里有两个问题。让我先解释一下我要做的事情。我有一个页面,其值已更改,但我想在更改之前获取值,保留它们,然后一旦按下按钮,将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();
}*/

2 个答案:

答案 0 :(得分:1)

如果设置locationwindow.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();
}​