Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите пожалуйста правильно написать скрипт (https://javascript.ru/forum/events/32434-pomogite-pozhalujjsta-pravilno-napisat-skript.html)

raffx 16.10.2012 12:08

Помогите пожалуйста правильно написать скрипт
 
Привет. Помогите плиз разобраться с кодом. Есть такой html:
<a href="#" onclick="showWork(GTL)">GTL</a>


Вот код JS:
function showWork(name){
	alert('work name is '+name);
}

Надо чтобы при клике написал: work name is GTL.
Помогите пожалуйста правильно написать скрипт.

Hekumok 16.10.2012 14:04

ну GTL в кавычки возьмите :)
<a href="#" onclick="showWork('GTL')">GTL</a>
<script>
function showWork(name) {
alert("work name is "+name) ;
return false ;
} ;
</script>

raffx 16.10.2012 15:04

Hekumok,
Спасибо :)

cyber 16.10.2012 15:23

не хватает
return false;

что бы отметить переход по ссылке.

Hekumok 16.10.2012 15:30

cyber, оке :)

raffx 16.10.2012 16:02

cyber, понял, добавлю, спасибо.
А можно ли вдобавок к этому поменять класс тега <a>, с которого делался клик? Вроде должно быть что-то такое
this.className="active";

но чего-то не работает :(

cyber 16.10.2012 16:11

raffx,
<!DOCTYPE HTML>
<html>
  <head> 
  <style>
    .red{
      color:red;
    }
    .green{
      color:green;
    }
    
    </style>
  </head>
  <body>
   
    <a href="#" class="red" >link</a>
    
    <script>

 var link = document.body.children[0];
      
      link.onclick = function () {
      
        this.className = "green";
       
      return false;
      };    


    </script>

  </body>
</html>

lord2kim 16.10.2012 16:13

Цитата:

Сообщение от raffx (Сообщение 210536)
cyber, понял, добавлю, спасибо.
А можно ли вдобавок к этому поменять класс тега <a>, с которого делался клик? Вроде должно быть что-то такое
this.className="active";

но чего-то не работает :(

<a href="#" onclick="alert(this.className); showWork('GTL', this); alert(this.className);">GTL</a>
<script>
function showWork(name, href) {
    href.className = "abc";
    alert("work name is "+name);
    return false;
}
</script>

cyber 16.10.2012 16:24

lord2kim, не очень хорошо писать Js в атрибуте onclick

raffx 16.10.2012 16:27

cyber, вроде также делаю, но не работает.
Прошу прощения за назойливость, не могли бы указать на ошибку в полном коде.
html
<ul><li class="leftmenu" onclick="showWork('gtl')">
	<a class="passive" href="#">GTL</a>
</li>
<li class="leftmenu" onclick="showWork('sotrudnichestvo')">
	<a class="passive" href="#">Сотрудничество</a>
</li>
</ul>


js
function showWork(name){
	var previous=document.getElementsByClassName('active'); 
        for (var i = 0; i < previous.length; i++) { 
            previous[i].className="passive"; 
        }
	this.className = 'active';
}


При клике на ссылку класс должен меняться на active, а при клике на другую ссылку, должен обратно меняться на passive.

lord2kim 16.10.2012 16:30

cyber, это для примера...

cyber 16.10.2012 16:34

raffx, вы хотите поменять класс для ссылки или для Li?

raffx 16.10.2012 16:40

Цитата:

Сообщение от cyber (Сообщение 210546)
lord2kim, не очень хорошо писать Js в атрибуте onclick

А какую альтернативу можно использовать?

raffx 16.10.2012 16:41

Цитата:

Сообщение от cyber (Сообщение 210554)
raffx, вы хотите поменять класс для ссылки или для Li?

Для ссылки.

cyber 16.10.2012 16:57

Цитата:

Сообщение от raffx (Сообщение 210556)
А какую альтернативу можно использовать?

-document.getElementById
-document.getElementsByClassName
-document.getElementsTagName
-document.querySelectorAll

cyber 16.10.2012 16:58

Цитата:

Сообщение от raffx (Сообщение 210557)
Для ссылки.

ну так он и не будет применяется к ней так как в this ссылка на tag li

raffx 16.10.2012 17:39

cyber, понял, буду выделять дочерний элемент (который всегда один). Все еще не работает :(
function showWork(name){
   var link = this.children[0];
   link.className = 'active';
}

lord2kim 16.10.2012 20:31

Цитата:

Сообщение от raffx (Сообщение 210570)
cyber, понял, буду выделять дочерний элемент (который всегда один). Все еще не работает :(
function showWork(name){
   var link = this.children[0];
   link.className = 'active';
}

<ul><li class="leftmenu" onclick="showWork('gtl', this)">
    <a class="passive" href="#">GTL</a>
</li>
<li class="leftmenu" onclick="showWork('sotrudnichestvo', this)">
    <a class="passive" href="#">Сотрудничество</a>
</li>
</ul>
<script>
function showWork(name, href){
    /*var previous=document.getElementsByClassName('active');
        for (var i = 0; i < previous.length; i++) {
            previous[i].className="passive";
        }
    this.className = 'active';*/
alert(href.childNodes[1].className);
   href.childNodes[1].className = "active";
alert(href.childNodes[1].className);
}
</script>


<ul><li class="leftmenu">
    <a class="passive" href="#">GTL</a>
</li>
<li class="leftmenu">
    <a class="passive" href="#">Сотрудничество</a>
</li>
</ul>
<script>
 var link = document.getElementsByTagName("ul")[0];
       
      link.onclick = function () {
       alert(this.childNodes[1].className);
        this.childNodes[1].className == "passiv" ? this.childNodes[1].className = "active" : this.childNodes[1].className = "passiv";
alert(this.childNodes[1].className);
        
      return false;
      };   
</script>


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