2014-01-16 4 views
0

Я работаю на небольшом веб-сайте, где я хочу переключать вкладки на основе переменной, переданной в URL-адресе. Вот логика, которую я написал в настоящее время.Передача переменной JS в getElementById

var hash = window.location.href.split("#"); 
var count = hash.length; 
if(count > 0){ 
    var blockid = hash[1]; 

    document.getElementById(hash[1]).css("display","block"); 
    //document.getElementById("showthisdiv").css("display","block"); - this works 

    document.getElementById("broken_href").innerHTML = blockid; 
} 

    <div class="broken_href"> </div> 

hash [1] - это имя div, в котором я хочу изменить стиль. Если я изменил хэш [1] и напишу имя div в GetElementById, он отлично работает. Также, чтобы проверить, что я создал фиктивный div, чтобы увидеть, какое значение удерживается блокиром. Он передает значение правильно.

URL для тестирования будет что-то вроде:

http://localhost/test/#showthisdiv 

Что мне нужно сделать, чтобы решить эту проблему?

+2

имя? Вы имеете в виду ИД, верно ?! Но здесь вы пытаетесь использовать метод css jquery на узле DOM, а не объект jq –

+0

@ A.Wolff - yup i означает id. мой плохой, когда я печатал его, переборщил. –

+3

'document.getElementById()' ничего не возвращает с помощью метода 'css'. – Quentin

ответ

2

Эта строка ваша проблема

document.getElementById(hash[1]).css("display","block"); 

Этот метод .css является метод JQuery и не доступен в базовой Javascript.

Вы могли бы использовать:

document.getElementById(hash[1]).style.display = "block"; 

Или включают JQuery и использование:

$("#"+hash[1]).css("display","block"); 
2

Вы пытаетесь использовать CSS метод JQuery на DOM узла, а не на JQ объекта

использовать вместо:

$('#'+hash[1]).show(); 
+0

@Tibos css() Метод jq предназначен для объекта jq, а не для узла DOM –

+0

'.css' - функция jQuery, используемая для элементов jQuery. Без jQuery его: 'document.getElementById (hash [1]). Style.display = 'block';' –

+0

@ A.Wolff да, я этого не заметил. Тем не менее, было бы неплохо сказать в ответе, в чем проблема, а не только в решении. – Tibos

0

Использование

var hash = window.location.hash; 

, а затем

document.getElementById(hash.substring(1)).style.display = "block"; 

Если вы используете jQuery yo и может сделать это непосредственно:

var hash = window.location.hash; 
... 
$(hash).show(); 

window.location.hash возвращает значение, как это: #some-hash. Это является причиной того, что вам нужно использовать substring(1) при вызове getElementById.

+0

css - это метод jquery –

+0

@ A.Wolff Whoups! Спасибо. Я просто скопировал код из вопроса. – GhitaB

+1

Будьте осторожны при использовании 'window.location.hash', поскольку не все браузеры фактически возвращают' # 'в качестве префикса. В моем коде я использую это: 'var hash = '#' + location.hash.replace ('#', ''); // некоторые браузеры не дают хэш' – theyetiman

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