Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2015, 11:12   #1
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию javascript. getElementById как вытащить число

Здравствуйте!
Набросал простенькую страничку, чтобы освоить getElementById
Хочу вытаскивать числовое (!) значение из ячейки val и увеличивать его на 0.001 раз в секунду. Никак не могу понять как мне вытащить числовое значение, а не текст.
Пока придумал только как работать с текстом

Код:
<!DOCTYPE html>
<html>
    <head>
        <title>Имитация</title></head>
    <body>
        <table>
            <tr>
                <td>Блок детектирования, ID</td>
                <td>Текущее значение</td>
                <td>Предупредительная уставка</td>
                <td>Аварийная уставка</td>
            </tr>
            <tr>
                <td>1</td>
                <td id = "val">0.087</td>
                <td>0.23</td>
                <td>0.3</td>
            </tr>
        </table>
        <script type="text/javascript">
            setInterval(foo, 1000);
            function foo()
            {
            document.getElementById("val").innerHTML = Number(document.getElementById("val").innerHTML) +0.001;
            }

        </script>
    </body>
</html>
Bayern_M вне форума Ответить с цитированием
Старый 03.08.2015, 11:23   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Попробуйте функию foo переписать так:

Код:
var q = +document.getElementById("val").innerHTML;
q +=0.001;

document.getElementById("val").innerHTML = q;
Вадим Мошев вне форума Ответить с цитированием
Старый 03.08.2015, 11:56   #3
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Попробуйте функию foo переписать так:

Код:
var q = +document.getElementById("val").innerHTML;
q +=0.001;

document.getElementById("val").innerHTML = q;
Спасибо, но хотелось бы реализовать без innerHTML, а, например, через .value.

ПС. и как можно меньше вызовов getElementById. А то ругаются, что он тяжелый. Буду сидеть думать
Bayern_M вне форума Ответить с цитированием
Старый 03.08.2015, 13:02   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Bayern_M Посмотреть сообщение
Спасибо, но хотелось бы реализовать без innerHTML, а, например, через .value.

ПС. и как можно меньше вызовов getElementById. А то ругаются, что он тяжелый. Буду сидеть думать
jQuery не подойдёт???
Streletz вне форума Ответить с цитированием
Старый 03.08.2015, 22:05   #5
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
Сообщение

>>> ПС. и как можно меньше вызовов getElementById. А то ругаются, что он тяжелый.
Почему тяжелый? Как я понял, самый быстрый. Внутреннее устройство поисковых методов

Если в коде часто приходится вызывать getElementById, то для удобочитаемости, можно через самодельную функцию gid
Код HTML:
function gid (idx) {return document.getElementById(idx);}
gid('Element1').innerHTML = ...;
gid('Elem2').style.display = ...;
SQLPowerUser вне форума Ответить с цитированием
Старый 04.08.2015, 09:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотелось бы реализовать без innerHTML, а, например, через .value.
Не получится. Нет свойства value у тега <td>.
Цитата:
как можно меньше вызовов getElementById. А то ругаются, что он тяжелый.
Дурацкие гики...
в начале скрипта создай переменку, в которую getElementById() получи нужный элемент. Потом обращайся к данным через эту переменку, если уж суеверный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2015, 17:35   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Bayern_M Посмотреть сообщение
и как можно меньше вызовов getElementById. А то ругаются, что он тяжелый.
А .innerHTML легкий, ага.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 09.08.2015, 00:16   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Немножко хардкора )
Код:
<script>var a;setInterval(function(){a.innerHTML=+(a=document.getElementById('val')).innerHTML+0.001},1000);</script>
uberchel вне форума Ответить с цитированием
Старый 22.08.2015, 12:53   #9
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
По умолчанию

у меня так получилось:

Код:
<script type="text/javascript">
            setInterval(foo, 1000);
            function foo()
            {
              var value = parseFloat(document.getElementById("val").innerHTML);
              document.getElementById("val").innerHTML = (value + 0.001).toFixed(3);
            }
        </script>
метод getElementById() самый быстрый, что существует в настоящее время в DOM API, так что вы были неверно информированы, а свойства value, как уже сказали, нет у элемента td, только innerHTML.
alexelev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить число из 14 последовательных разрядов vaan.sk Общие вопросы C/C++ 3 05.12.2012 10:04
JavaScript.как я могу вписать число в область для введения числа на сайте. ромик0 JavaScript, Ajax 9 08.07.2011 17:30
Как правильно изменить фон в объекте, полученном через getElementById Stilet JavaScript, Ajax 3 11.11.2010 17:34
Что делает данный JS (там есть такие ф-ии как getElementsByTagName и getElementById) TwiX JavaScript, Ajax 5 05.02.2010 19:49
JavaScript. Проблема с GetElementById kirill555 Помощь студентам 1 14.02.2008 12:30