Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверить наличие элемента на странице (https://javascript.ru/forum/dom-window/12118-proverit-nalichie-ehlementa-na-stranice.html)

KonstantinK 01.10.2010 12:05

Проверить наличие элемента на странице
 
Подскажите чет не соображу. Как мне определить есть ли элемент с определенным id на странице. По идее думал что
document.getElementById(id)
выдаст false если нет элемента и true если есть но что то не работает

Kolyaj 01.10.2010 12:26

Выдаст null, если элемента нет, и сам элемент -- если он есть.

Vulkan 01.10.2010 13:05

Так будет легче проверять, по сути тоже самое что сказал Kolyaj:
<script type="text/javascript">
var element=document.getElementById('logo');
if(!element){alert('меня нет на странице');} else {alert('я присутствую');}
</script>

HelpeR 01.10.2010 13:17

Наверное пытаетесь найти элемент который еще не загрузился!
<script>
alert(document.getElementById('s')); //null
</script>
<div id="s"></div>

KonstantinK 01.10.2010 13:41

Спасибо Kolyaj,
Vulkan,
HelpeR,
в принципе я обощел это место но учту на будующее, теперь не получается вот что
function Add_Minsumm_Popoln(id){
        // функция добавляет или удаляет поля для внесения сумм минимального пополнения вклада
        var id_table = document.getElementById('adm_dep_main_table')
        var befor_tr = document.getElementById('deduct')
       
       
        //проверяем валюты 
        if(document.getElementById(id).value == 'Да'){
            if(document.getElementById('rur').checked){
                   var new_tr = document.createElement('TR')
                   new_tr.id = 'min_pop_rur'
                   
                   id_table.insertBefore(new_tr,befor_tr)
                   
                   new_tr.innerHTML = '<td>Минимальная сумма пополнения валюта Рубль РФ </td> \
                                    <td><input type="text" name="form[value4]" /></td>'
                }

Это кусок функции которая срабатывает по onchange , на мой взгляд должно работать но Firebug выдает вот такое сообщение
Node was not found" code: "8
[Break on this error] id_table.insertBefore(new_tr,befor_tr)
Хоть это уже будет другая тема подскажите где ошибка.

HelpeR 01.10.2010 13:48

можно вместо id_table.insertBefore(new_tr,befor_tr) вставить
if(id_table) {
    id_table.insertRow(0);
    id_table.rows[0].insertCell(0).innerHTML = 'Минимальная сумма пополнения валюта Рубль РФ';
    id_table.rows[0].insertCell(1).innerHTML = '<input type="text" name="form[value4]" />';
}

KonstantinK 01.10.2010 14:03

HelpeR,
Мне ж надо в конкретное место вставить. Интересно что
table_id.appendChild(new_tr)
работает и нормально вставляет в конец таблицы

HelpeR 01.10.2010 14:11

if(id_table) {
    id_table.insertRow(0); // если 0 то вы вставите как первый tr, 1 как второй и тд
    id_table.rows[/*сюда эту же цифру*/].insertCell(0).innerHTML = 'Минимальная сумма пополнения валюта Рубль РФ';
    id_table.rows[/*сюда эту же цифру*/].insertCell(1).innerHTML = '<input type="text" name="form[value4]" />';
}

KonstantinK 01.10.2010 14:28

HelpeR,
Ну да понятно, спасибо тут вроде можно вычислить номер tr попоробую переделать, все таки странно что insertBefore не работает

HelpeR 01.10.2010 14:42

да почему то insertBefore не работает для таблиц и приходится использовать только insertRow

KonstantinK 01.10.2010 14:52

Цитата:

Сообщение от HelpeR
да почему то insertBefore не работает для таблиц

Это предположение или факт? Мне почему-то кажеться(надо проверить) что я как то уже вставлял так в таблицу и работало. Просто у меня еще две функции подобного рода я их хотел после этой отладить.

HelpeR 01.10.2010 14:55

Цитата:

Сообщение от KonstantinK (Сообщение 72691)
Это предположение или факт?

Факт!

sotik 21.09.2013 01:02

Есть пару строк кода:
var myknop;
myknop=document.getElementById ('myknop');
remove(myknop);
if( myknop != null )return;
function remove( elem ) {
if ( elem ) elem.parentNode.removeChild( elem );
}
Элемент кнопка.
После его удаления условие упорно выдает не null и происходит return.
Как это победить?

ricos 17.11.2013 13:07

var table = document.getElementById('collapseobj_similarthreads'),
    tr1 = table.getElementsByTagName('TR')[2],
    tr = document.createElement('TR'),
    td;
for(var i=0; i<5; i++) {
    td = document.createElement('TD');
    td.appendChild(document.createTextNode('Тест'));
    tr.appendChild(td);
}
table.insertBefore(tr, tr1);


Запустите в консоли и проверьте таблицу внизу этой ветки (Похожие темы).

в качестве table используется не таблица, а tbody. tr не является прямым потомком table, браузер автоматом создает tbody.

ricos 17.11.2013 13:16

sotik, если вопрос еще актуален, ты удалил элемент из родителя, но переменная не была очищена, и используя ее ты можешь заново вставить этот элемент куда-либо. Помимо removeChild тут надо явно присваивать myknop = null;


Часовой пояс GMT +3, время: 03:33.