<script>
var a = document.getElementById("text").value;
function toupper()
{
var mystring = new String(a);
document.write(a.toUpperCase());
}
</script>
**HTML**
<input type="text" id="text" name="text" />
<input type="button" id="clickme" value="clickme" name="click" onclick="toupper();"/>
Почему переменная "a" недоступна в функции "toupper"?
Pull var a
внутри функции & вам не нужно писать new String(a)
function toupper() {
var a = document.getElementById("text").value;
document.write(a.toUpperCase());
}
Это сработает. вы присвоили значение перед загрузкой текстовых полей
function toupper(){ var a = document.getElementById("text").value; document.write(a.toUpperCase()); }
Вам нужно повторно получить ссылку на текстовое поле при каждом вызове функции.
var writeNewLine = function(text) {
var addChild = function(node) {
window.document.body.appendChild(node);
};
addChild(document.createElement('br'));
addChild(document.createTextNode(text.toUpperCase()));
};
window.toupper = function() {
var mystring = document.getElementById("text").value;
writeNewLine(mystring.toUpperCase());
}
Выполнение оператора var a = document.getElementById("text").value
не выполняется, потому что когда он выполняется, элемент с id
значением text
не был разобран, т.е. Не существует. Вам нужно иметь document.getElementById("text")
внутри функции или иначе в точке, где этот элемент существует.
проблема в том, что вы пытаетесь выполнить
var a = document.getElementById("text").value;
перед завершением загрузки документа.
попробуйте следующее, это должно сработать.
var a;
document.addEventListener('DOMContentLoaded', function() {
a = document.getElementById("text").value;
});
function toupper()
{
var mystring = new String(a);
document.write(a.toUpperCase());
}
Переменная a объявляется снаружи, поэтому она доступна в обоих режимах обратного вызова для готовности документа и функции toupper. Получите значение элемента после того, как вы убедитесь, что страница (DOM) загружена
mystring.toUpperCase()
?a
уже строка