2011-07-07 33 views
0

好的noobablicious问题。但是让我总结了一下。js致电变量值变量

Im在一个函数中声明带有Js脚本的隐藏表单域的值。

例如这些只是一些例子,不是真正的脚本。

function myFunction(){ 
    var text = "hello world"; 
    var number = 12345; 



    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 

    } 

然后,我希望能够在另一个脚本中使用表单值的值作为变量。我意识到可以选择全局声明这些变量。但是我听说它并不安全。或者像我一样精简。

第二个脚本例子...

var autoText = document.getElementById('text').value; 
    var autoNumber = document.getElementById('number').value; 

    ...do stuff with variables. 

但是这不工作,并返回undefined。这是正确的DOM路径来访问我的表单字段的值,或者我需要找到一个属性及其子?

还有什么其他的选择可以给我?

谢谢你的时间。 HTML是...

<form action="http://mysite/mypath" method="post"> 

    <input type="text" name="text" id="text" value=""> 
    <input type="text" name="text" id="number" value=""> 
    <input type= "submit" name="go" value="go" allign="middle"/> 
    </form> 

+0

请更新您的问题,包括为有问题的隐藏字段示例HTML。假设您实际上有一个id为'text'的元素,并且您的HTML中没有任何重复的id,您当前的'document.getElementById('text')。value;'语法看起来很好。我知道你说过这只是一个示例,但是你的'myFunction()'有一个错误:'数字'变量用's'声明,但是在没有's'的情况下作为'数字'访问。 (另:'sumped'?) – nnnnnn

回答

0

或者,您可以将该数据存储在闭包中,以便两个函数都可以访问该变量,但它不存储在全局范围中。像这样:

(function(){ 
    var text = "blah blah", 
     number = 12345; 

    function insertValues() { 
    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 
    } 
    function otherStuffWithValues() { 
    alert(text); 
    alert(number); 
    } 
    insertValues(); 
    otherStuffWithValues(); 
}()) 

此外,您也可以宣布的第一个函数中的变量,然后传递变量到第二功能像这样的参数:

function insertValues() { 
    var text = "blah blah", 
     number = 12345; 
    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 
    otherstuff(text,number) 
} 

function otherstuff(sometext,somenumber) { 
    alert(sometext); 
    alert(somenumber); 
} 
insertValues() 
+0

那是行得通的。谢谢你的时间。 – Christopher

1

这应该是罚款,假设你有正确的ID设置为你想要的元素。请记住,该ID必须是唯一的,否则将出现不可预知的问题。

在加载DOM之后,请确保您正在运行代码。否则该元素可能还不存在于DOM中,因此document.getElementById方法将无法找到它。

-1

我认为在页面加载时您没有设置启动脚本。如果是这样,您可以使用这个简单的事件处理程序:

window.onload = myFunction; 

随着myFunction将与您的上述代码功能。

+0

否从正文onload调用myFunction()。但是谢谢你的时间。 – Christopher