2013-04-08 4 views
1

Я не могу изменить href в этом скрипте. Но innerHTML работает. Что не так?изменить href через javascript

<script> 
     FB.init({ 
      appId: 1234, 
      cookie: true, 
      status: true, 
      xfbml: true 
     }); 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
       var uid = response.authResponse.userID; 
       var accessToken = response.authResponse.accessToken; 
       document.getElementById('test').href = 'http://www.example.com/auth/login'; 
       // document.getElementById('index-facebook-login-button').innerHTML = '<a class="index-facebook-login-button" href="http://www.example.com/auth/login" target="_self"></a>'; 

      } else if (response.status === 'not_authorized') { 
       document.getElementById('test').href += 'http://www.example.com/connectfacebook'; 
       //this works!!!      
       //document.getElementById('index-facebook-login-button').innerHTML = '<a class="index-facebook-login-button" href="http://www.example.com/connectfacebook" target="_self"></a>'; 

      } else { 
       document.getElementById('test').href += 'http://www.example.com/connectfacebook'; 
       //this works!!!      
       // document.getElementById('index-facebook-login-button').innerHTML = '<a class="index-facebook-login-button" href="http://www.example.com/connectfacebook" target="_self"></a>'; 
      } 

     }); 
    </script> 

<div id="index-facebook-login-text" onLoad="FB.getLoginStatus();"> 
some text here 
    <div id="index-facebook-login-button" style="margin-left: 25px;"> 
      <a id="test" class="index-facebook-login-button" href="" target="_self"></a> 
    </div> 
</div> 
+3

Может быть, в данный момент вы пытаетесь доступ к элементу, он не существует или не имеет этого идентификатора? Установите контрольную точку, проверьте структуру DOM ... обычную процедуру отладки. –

+0

Почему 'href + =' во 2-м и 3-м случае? Не имеет смысла (если текущий URL-адрес не будет иметь то, что уже имеет пустой параметр). – CBroe

ответ

-1

Атрибуты объекта Element в DOM API JavaScript являются не то же самое, как атрибуты фактического элемента в DOM. Этот объект является просто интерфейсом к DOM. Вы хотите использовать метод SetAttribute():

document.getElementById('test').setAttribute('href', 'http://example.com') 

Http: ̶/̶/̶w̶w̶w̶.̶w̶3̶s̶c̶h̶o̶o̶l̶s̶.̶c̶o̶m̶/̶j̶s̶r̶e̶f̶/̶m̶e̶t̶_̶e̶l̶e̶m̶e̶n̶t̶_̶s̶e̶t̶a̶t̶t̶r̶i̶b̶u̶t̶e̶.̶a̶s̶p̶ (don't use W3school) https://developer.mozilla.org/en/docs/DOM/element.setAttribute

+0

[w3fools] (http://w3fools.com) – fernandosavio

+0

* "Атрибуты объекта Element в DOM API Javascript не совпадают как атрибуты фактического элемента в DOM ». * Это немного запутывает ИМО. Да, 'href' - это не то же самое, что' getAttribute ('href') ', но с целью его установки в данном случае это не имеет никакого значения. JavaScript DOM API по-прежнему следует официальному DOM API и расширению HTML DOM. –

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