Почему данный код не преобразует текст в верхний регистр?

0
<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"?

  • 1
    Хм, mystring.toUpperCase() ?
  • 0
    a уже строка
Теги:

5 ответов

1

Pull var a внутри функции & вам не нужно писать new String(a)

function toupper() {
    var a = document.getElementById("text").value;
    document.write(a.toUpperCase());
}

http://jsfiddle.net/Fn4Ns/3/

0

Это сработает. вы присвоили значение перед загрузкой текстовых полей

function toupper(){ var a = document.getElementById("text").value; document.write(a.toUpperCase()); }

0

Вам нужно повторно получить ссылку на текстовое поле при каждом вызове функции.

DEMO

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());
}
0

Выполнение оператора var a = document.getElementById("text").value не выполняется, потому что когда он выполняется, элемент с id значением text не был разобран, т.е. Не существует. Вам нужно иметь document.getElementById("text") внутри функции или иначе в точке, где этот элемент существует.

0

проблема в том, что вы пытаетесь выполнить

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) загружена

Ещё вопросы

Сообщество Overcoder
Наверх
Меню