好的,所以我在体内有这个代码:
<input type="text" value="haha" id="full_name"/>
脚本中的代码
<script language="javascript" type="text/javascript">
function first(){
var nameContent=document.getElementById('full_name').value;
}
function second() {
first();
y=nameContent;
alert(y);
}
second();
</script>
我想要一个显示元素full_name值的警报,但它似乎不起作用,有人知道为什么吗? :S
答案 0 :(得分:17)
nameContent
仅存在于first()
函数中,正如您在first()
函数中定义的那样。
为了扩大其范围,请在函数之外定义它:
var nameContent;
function first(){
nameContent=document.getElementById('full_name').value;
}
function second() {
first();
y=nameContent; alert(y);
}
second();
稍微更好的方法是return
该值,因为全局变量很快就会变得混乱:
function getFullName() {
return document.getElementById('full_name').value;
}
function doStuff() {
var name = getFullName();
alert(name);
}
doStuff();
答案 1 :(得分:4)
您的nameContent范围仅在第一个函数内。你永远不会以这种方式获得它的价值。
var nameContent; // now it's global!
function first(){
nameContent = document.getElementById('full_name').value;
}
function second() {
first();
y=nameContent;
alert(y);
}
second();
答案 2 :(得分:1)
你需要在第一个函数中使用return语句。
function first(){
var nameContent = document.getElementById('full_name').value;
return nameContent;
}
然后在你的第二个函数中可以是:
function second(){
alert(first());
}
答案 3 :(得分:1)
您的nameContent
变量位于函数范围内,并且在该函数外部不可见,因此如果您想在函数外部使用nameContent
,请在{{1}内声明它global
使用<script>
关键字标记并使用内部函数,如下所示
var
答案 4 :(得分:0)
在ES5中实现此目标的OOP方法是使用this关键字将该变量变成属性。
function first(){
this.nameContent=document.getElementById('full_name').value;
}
function second() {
y=new first();
alert(y.nameContent);
}