2012-02-22 2 views
0

В моем веб-приложении html5 я устанавливаю значение некоторых элементов html при загрузке DOM. Используемые значения берутся из некоторых глобальных переменных Javascript, которые определяются после начала загрузки DOM, но до добавления соответствующего элемента hmml DOM. Пока мой код выглядит примерно так:Установить значение элементов html в "runtime"

myBtnText="some value"; 
//.... 

<input type="button" id="myBtn" onclick="DoSomeAction();" /> 
<script type="text/javascript"> 
    document.getElementById("myBtn").value = myBtnText; 
</script> 

код работает, но я хотел бы улучшить его, чтобы избежать призыва, document.getElementById («myBtn»), а также сделать код меньше. Я имею в виду, чтобы упростить это сделать что-то вроде:

<input type="button" id="myBtn" value=/*<myBtnText>*/ onclick="DoSomeAction();" /> 

где//будет выражение, которое может помочь получить значение глобальной переменной myBtnText.

Любые мысли, если это было бы возможно, и как это можно сделать?

ответ

1

Если вы использовали JQuery вы могли бы сделать избежать вызов document.getElementById делать что-то вдоль линий:

$('#myBtn').val(); 

, чтобы получить значение поля и:

$('#myBtn').val("something"); 

Для установите его значение. Вы можете узнать больше здесь:

http://api.jquery.com/val/

+0

Я использую JQuery, и я знаю об этом режиме установки значения элементов, но он все равно будет называть document.getElementById («myBtn») метод (от JQuery JS) –

+0

Ну, если вы беспокоятся о строках кода с точки зрения ремонтопригодности, а затем просто используйте JQuery. Если вас беспокоит скорость страницы или время загрузки контента, вам, вероятно, придется придерживаться традиционных методов или сделать что-то вроде другого ответа, предлагающего document.write как возможность. Если вы уже загрузили JQuery на свою страницу для других целей, я не знаю, почему вы просто не использовали бы ее функциональные возможности для записи значений. Вам нужно будет сделать это, когда документ загрузится, но он должен быть достаточно быстрым, чтобы пользователь не заметил разницы. –

+0

Raul Marengo - jQuery загружается на страницу, но находится в конце страницы и со скоростью страницы. –

0

Ого, что? Это выглядит как ужасный синтаксис. Вы пытаетесь изобрести perl внутри HTML? Вы полностью разобьете любой парсер с такой штукой!

Поскольку проблема, которую вы пытаетесь решить, как представляется, количество кода, почему бы вам не просто сосредоточиться на сокращении кода на соответствующие функции, как:

<script> 
function setValue(id, value) { 
    document.getElementById(id).value = value; 
} 
</script> 
+0

SpliFF -one проблема - это количество кода, другое - мне нужно получить доступ к DOM, чтобы получить элемент, хотя я знаю, что это так, и это будет «дорогой операцией» от того, что я видел до тех пор, пока не узнаю (У меня нет большого опыта в разработке веб-сайтов). Хотя, если есть возможность установить значение элемента непосредственно из html, это будет также улучшением с точки зрения производительности. –

1

Почему установить значение кнопки перед DOM готов? Это один из способов сделать это во время разбора страницы.

myBtnText="some value"; 
//.... 
/* some HTML */ 

    <SCRIPT> 
    document.write('<input type="button" id="myBtn" onclick="DoSomeAction();" value="'+myBtnText+'"/>'); 
    </SCRIPT> 

/* more HTML */ 
+0

Teemu - Я тоже думаю об этом подходе, но я надеялся, что он существует, чтобы получить значение глобальной переменной и установить значение элемента непосредственно в html. Я думаю, что ваш ответ требует небольшого обновления: document.write (''); –

+0

Вы правы с «обновлением», извините за плохой код. Но это единственный способ установить атрибуты в JavaScript, пока страница анализируется. Я думаю, PHP предложит более сложные решения? – Teemu

Смежные вопросы