Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   именна для id (https://javascript.ru/forum/events/30903-imenna-dlya-id.html)

cyber 20.08.2012 02:48

именна для id
 
решил я сделать велосипед и когда я ввел класс а потом Id на русском я был жестоко удивлен
я думал что id должен быть на английском
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    
    <div id='че за ...?' class='че за ...?'>как оно вообще работает?О_о</div>
    <script>

   alert( document.getElementById('че за ...?').innerHTML)  
alert(document.getElementsByClassName('че за ...?')[0].innerHTML)
      
    </script>

  </body>
</html>

Deff 20.08.2012 03:02

cyber,
В старых версиях браузеров и ИЕ id на русском не проходит

cyber 20.08.2012 03:11

в ие8 проходит, а на все что ниже я забил=)

cyber 20.08.2012 03:12

еще хотел спросить, велосипед норм получился?

function $(selector) {
      
        
       var d = document; 
       
        
        if (!selector) return;
        
        function querySelector(){
        
          if(!d.querySelectorAll) return getEelemet();
             
            return d.querySelectorAll(selector);
        
        
        };
        
        function getEelemet () { 
        
        var selectorType = selector.match(/(#|\.|[A-Z]|[a-z]){1}/);  
        var match = selectorType[0]; 
       
          if (match[0] == '#') {
         return d.getElementById(selector.replace('#',''))
        
        }
        
         
        if (match == '.') {
         return d.getElementsByClassName(selector.replace('.',''))   
        }
        
         
          try{ 
            return d.getElementsByTagName(selector); 
          } catch (e) {
          
          return;
          } 
          
      }
        
        return querySelector();
      }

platedz 21.08.2012 00:54

а если так надо $("#id, #id2")?

platedz 21.08.2012 00:58

А если на странице 2 элемента с одним классом?

cyber 21.08.2012 00:59

Цитата:

Сообщение от platedz (Сообщение 199230)
а если так надо $("#id, #id2")?

да
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script >
  
      function $(selector) {
      
        
       var d = document; 
       
        
        if (!selector) return;
        
        function querySelector(){
        
          if(!d.querySelectorAll) return getEelemet();
             
            return d.querySelectorAll(selector);
        
        
        };
        
        function getEelemet () { 
        
        var selectorType = selector.match(/(#|\.|[A-Z]|[a-z]){1}/);  
        var match = selectorType[0]; 
       
          if (match[0] == '#') {
            
         return d.getElementById(selector.replace('#',''))
        
        }
        
         
        if (match == '.') {
         return d.getElementsByClassName(selector.replace('.',''))   
        }
        
         
          try{ 
            return d.getElementsByTagName(selector); 
         
          } catch (e) {
          
          return;
          } 
          
      }
        
        return querySelector();
      }
  </script>

</head>
<body>



<a href="#" id="link">Ссылка с <i>подсказкой</i></a>
<a href="#" id="link2">Еще ссылка</a>

<script>

alert($('#link, #link2').length)
</script>

</body>
</html>

platedz 22.08.2012 22:05

<div id="id1">id1</div><div id="id2">id2</div>
<script> alert(document.getElementById("id1, id2").length); </script>

А почему так не работает?

cyber 22.08.2012 22:13

потому что скрипт по умолчанию использует querySelectorAll
http://learn.javascript.ru/searching...electorall-css


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