Javascript: получить значение переменной функции в рамках другой функции
ОК, поэтому у меня есть этот код в теле:
<input type="text" value="haha" id="full_name"/>
И этот код в script
<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
Ответы
Ответ 1
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();
Ответ 2
Ваше имяСодержание области доступно только внутри первой функции. Вы никогда не получите это значение таким образом.
var nameContent; // now it global!
function first(){
nameContent = document.getElementById('full_name').value;
}
function second() {
first();
y=nameContent;
alert(y);
}
second();
Ответ 3
вам понадобится оператор return в вашей первой функции.
function first(){
var nameContent = document.getElementById('full_name').value;
return nameContent;
}
а затем в вашей второй функции может быть:
function second(){
alert(first());
}
Ответ 4
Ваша переменная nameContent
находится внутри области функций и не видна вне этой функции, поэтому, если вы хотите использовать nameContent
вне функции, объявите ее global
внутри тега <script>
и используйте внутренние функции без ключевое слово var
следующим образом
<script language="javascript" type="text/javascript">
var nameContent; // In the global scope
function first(){
nameContent=document.getElementById('full_name').value;
}
function second() {
first();
y=nameContent;
alert(y);
}
second();
</script>