Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2013, 21:53
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Добавление событие onclick и выполнение метода
Помогите с решением задачи.
Надо добавить <а> элементы и события onclick из js. При вызове метода ничего не работает. Я новичек в JS, только учусь... облазил уже все в интернете и не нашел решения...
вот код:
function addA ()
	{
var aEl = document.createElement("a");
 aEl.href ="";
 aEl.innerHTML = "More information";

 var divParent = document.getElementsByClassName ("post");
 for (var i=0; i<divParent.length; i++){	
	divParent[i].insertBefore (aEl.cloneNode(true), divParent.lastChild);
		}
		
		var aHandler = document.getElementsByTagName ("a");
       for (var i=0; i<aHandler.length; i++)
	   aHandler[i].onclick=funk(this);
		}
		addA ();

код метода при активации onclick:
function funk(a)
{

if (a.nextElementSibling.getAttribute("style") == ("display:none")){	
				a.nextElementSibling.setAttribute("style", "display:default");
			}
			else{
				a.nextElementSibling.setAttribute("style", "display:none");
}


И ничего не работает так как надо... где ошибки?

Последний раз редактировалось Serhiy, 24.11.2013 в 22:05.
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2013, 22:28
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Сообщение от Rise Посмотреть сообщение
aHandler[i].onclick =  function() { funk(this) };
Это не помогло решить проблему.... метод funk(a) не работает...
Так выглядит что не правильный алгоритм if... что не так?
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2013, 22:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Serhiy,
где структура html и где 10 строка в
Сообщение от Serhiy
function funk(a)
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2013, 23:03
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Сообщение от рони Посмотреть сообщение
Serhiy,
где структура html и где 10 строка в
Вот HTML:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Javascript Hidden textarea</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div id="container">
    <div id="content">
		<div class="post">
				<h3>
					Javascript insändningsuppgift 1
				</h3>
				<p class="author">
					posted by Elevid, kurs, termin
				</p>		
			<aside>
				Att lära sig använda Javascript är enklare än man kan tro
			</aside>
				<p>
					Här ser du en introduktionstext som skall bli längre....
				</p>
				<p class="show">
					...så att vidare information kan visas. Här kommer då en längre exempel text där användaren kan läsa mera
					om just denna post. Detta är en vanlig funktion som du kan hitta på många vanliga webbsidor som säljer
					produkter.
				</p>	
		</div>
		<div class="post">
				<h3>
					Javascript insändningsuppgift 1
				</h3>
				<p class="author">
					posted by Elevid, kurs, termin
				</p>																			
				<aside>
					Tänk vad mycket man kan lära sig
				</aside>
				<p>
					Även detta textstycke skall utökas...
				</p>
				<p class="show">
					...så att vidare information kan visas. Här kommer då en längre exempel text där användaren kan läsa mera
					om just denna post. Detta är en vanlig funktion som du kan hitta på många vanliga webbsidor som säljer
					produkter.

				</p>
		</div>
	</div>
    
</div>
<script type="text/javascript" src="js/js_hiddentext.js"></script>
</body>
</html>


в 10-й строке потерял ; при копирование...
вот все код js:
function hideP (){
			var showP = document.getElementsByClassName("show");
			for (var i=0; i<showP.length; i++){	
			showP[i].setAttribute("style", "display:none");
			}
			};
		hideP ();
		
	function addA ()
	{
var aEl = document.createElement("a");
 aEl.href ="";
 aEl.innerHTML = "Visa merra information";

 var divParent = document.getElementsByClassName ("post");
 for (var i=0; i<divParent.length; i++){	
	divParent[i].insertBefore (aEl.cloneNode(true), divParent.lastChild);
		}	
		
		var aHandler = document.getElementsByTagName ("a");
       for (var i=0; i<aHandler.length; i++)
	   aHandler[i].onclick=function(){funk(this)};
		}
		addA ();
		
function funk(a){

if (a.nextElementSibling.getAttribute("style") == ("display:none")){	
				a.nextElementSibling.setAttribute("style", "display:default");
			}
			else{
				a.nextElementSibling.setAttribute("style", "display:none");
			}
		}
Ответить с цитированием
  #5 (permalink)  
Старый 24.11.2013, 23:25
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Сообщение от рони Посмотреть сообщение
Serhiy,
где структура html и где 10 строка в
не зря был вопрос про структуру...
Была ошибка в funk(a) ...
поменял a.nextElementSibling.getAttribute на a.nextElementSibling.getAttribute
правда не понимаю почему а элемент оказался последним дочерним элементом... ну да ладно с этим потом разберусь...
При выполнении метода funk(a) код выполняется (текст появляется) и тут сражу же автоматически выполняется метод function hideP ()... И текст сразу же снова прячется.... почему так происходит?
Ответить с цитированием
  #6 (permalink)  
Старый 24.11.2013, 23:35
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Сообщение от Rise Посмотреть сообщение
.setAttribute("style", "display:none"); меняем на .style.display = 'none';
.getAttribute("style") на .style.display
Нет, таким образом совсем все плохо.... так код не хочет работать
Ответить с цитированием
  #7 (permalink)  
Старый 24.11.2013, 23:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Serhiy,
Сообщение от Serhiy
divParent.lastChild
потеряно [i]

Сообщение от Serhiy
aHandler[i].onclick=function(){return funk(this)};
function funk(a){ ... return false}

строка 49 и 30 без пропуска !!! либо lastElementChild вместо lastChild

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<div id="container">
    <div id="content">
		<div class="post">
				<h3>
					Javascript insändningsuppgift 1
				</h3>
				<p class="author">
					posted by Elevid, kurs, termin
				</p>
			<aside>
				Att lära sig använda Javascript är enklare än man kan tro
			</aside>
				<p>
					Här ser du en introduktionstext som skall bli längre....
				</p>
				<p class="show">
					...så att vidare information kan visas. Här kommer då en längre exempel text där användaren kan läsa mera
					om just denna post. Detta är en vanlig funktion som du kan hitta på många vanliga webbsidor som säljer
					produkter.
				</p></div>
		<div class="post">
				<h3>
					Javascript insändningsuppgift 1
				</h3>
				<p class="author">
					posted by Elevid, kurs, termin
				</p>
				<aside>
					Tänk vad mycket man kan lära sig
				</aside>
				<p>
					Även detta textstycke skall utökas...
				</p>
				<p class="show">
					...så att vidare information kan visas. Här kommer då en längre exempel text där användaren kan läsa mera
					om just denna post. Detta är en vanlig funktion som du kan hitta på många vanliga webbsidor som säljer
					produkter.

				</p></div>
	</div>

</div>

   <script>
   function hideP (){
			var showP = document.getElementsByClassName("show");
			for (var i=0; i<showP.length; i++){
			showP[i].setAttribute("style", "display:none");
			}
			};
		hideP ();

	function addA ()
	{
var aEl = document.createElement("a");
 aEl.href ="";
 aEl.innerHTML = "Visa merra information";

 var divParent = document.getElementsByClassName ("post");
 for (var i=0; i<divParent.length; i++){
	divParent[i].insertBefore (aEl.cloneNode(true), divParent[i].lastChild);
		}

		var aHandler = document.getElementsByTagName ("a");
       for (var i=0; i<aHandler.length; i++)
	   aHandler[i].onclick=function(){return funk(this)};
		}
		addA ();

function funk(a){

if (a.nextElementSibling.style.display != "none"){
				a.nextElementSibling.style.display="none";
			}
			else{
				a.nextElementSibling.style.display="block";
			};
             return false;

		}

   </script>
</body>

</html>

Последний раз редактировалось рони, 24.11.2013 в 23:48.
Ответить с цитированием
  #8 (permalink)  
Старый 24.11.2013, 23:45
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

Спасибо Рони... работает
вот что оно значит невнимательность новичка... пропустил [i] и немог понять в чем дело...
Ответить с цитированием
  #9 (permalink)  
Старый 24.11.2013, 23:54
Новичок на форуме
Отправить личное сообщение для Serhiy Посмотреть профиль Найти все сообщения от Serhiy
 
Регистрация: 24.11.2013
Сообщений: 8

строка 49 и 30 без пропуска !!!
Тут я совсем не понял.... почему без пропуска? Все работает так как надо... но как это влияет? Я просто хочу разобраться и понять....
Какая разница между lastElementChild и lastChild?

Последний раз редактировалось Serhiy, 24.11.2013 в 23:59.
Ответить с цитированием
  #10 (permalink)  
Старый 25.11.2013, 00:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Serhiy
Какая разница между lastElementChild и lastChild?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">

</head>

<body>
     <div class="post"><p class="show"></p> </div>
     <script>
      var div = document.querySelector('.post');
      alert([div.lastElementChild,div.lastChild]);
     </script>
</body>

</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ДОбавить событие live к тегу onclick jonick Элементы интерфейса 6 24.09.2013 19:54
Поправьте событие onclick djonA Общие вопросы Javascript 1 24.03.2013 14:39
событие onclick chelsea Общие вопросы Javascript 1 17.09.2010 11:31
Событие onClick при нажатии пункта меню Lex4e Общие вопросы Javascript 1 25.06.2010 18:31
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01