Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с вызовом функции! (https://javascript.ru/forum/misc/13451-problema-s-vyzovom-funkcii.html)

Pacan 29.11.2010 12:18

Проблема с вызовом функции!
 
Здравствуйте.

начну по порядку:

нужно сделать такой див что бы при загрузке страницы его не было видно, но при нажатии на ссылку "1" он появлялся!

Код приведенный ниже работает, но вот функция kill почему-то не срабатывает. но если в место document.getElementById("flashcontent").style.disp lay="none"
прописать alert ("1");(например) то сообщение выводится! Не могу понять в чем дело!

как быть!????буду рад любой помощи!

<script type="text/javascript" src="/swfobject/swfobject.js"></script>

<script type="text/javascript">
var flashvars = {};
var params = {wmode:"transparent", allowScriptAccess:"always", allowFullScreen:"true"};
var attributes = {};
swfobject.embedSWF("/swf/maps/flash.swf", "flashcontent", "693", "865", "9.0.0",
"expressInstall.swf", flashvars, params, attributes);

var open = function() {document.getElementById("flashcontent").style.dis play="block";};
var kill = function() {document.getElementById("flashcontent").style.dis play="none";};
kill ();
</script>

<div id="flashcontent" style="position: relative;">Установите flash-payer</div>

<a href="javascript:open();">1</a>

Kolyaj 29.11.2010 12:44

Когда вы вызываете kill, элемента flashcontent ещё нет на странице.

Pacan 29.11.2010 13:03

делал так:

<script type="text/javascript" src="/swfobject/swfobject.js"></script>

<script type="text/javascript">
var flashvars = {};
var params = {wmode:"transparent", allowScriptAccess:"always", allowFullScreen:"true"};
var attributes = {};
swfobject.embedSWF("/swf/maps/balt.swf", "flashcontent", "693", "865", "9.0.0",
"expressInstall.swf", flashvars, params, attributes);
var open = function() {document.getElementById("flashcontent").style.dis play="block";};
var kill = function() {document.getElementById("flashcontent").style.dis play="none";};
</script>

<div id="flashcontent" style="position: relative;">Установите flash-payer</div>

<a href="javascript:open();">1</a>

<script type="text/javascript">
kill ();
</script>

не помогло! все равно вылазит!((((

может div надо убивать как-то по другому!?

tom 29.11.2010 13:17

Помогите и мне
 
:blink:
Извинения ТС,за то, что влез в тему, просто не хотел плодить лишних .


вот сайт http://radugaspa.ru
По всей видимости у меня тоже проблема с вызываом функции. Мне нужно прикрутить плавнораскрывающееся меню в движок phpshop.

Само меню, взял тут http://www.ruseller.com/lessons.php?rub=33&id=240 , подключил его в файле шаблона. Это файл шаблона выводится на главную ввиде пременной @leftCatal@.

Но дело в том, что скрипт срабатывает только для первого пункта меню, а второй и все отстальные выводятся уже раскрытыми.


помагите пожалуйста .

ksa 29.11.2010 13:17

Цитата:

Сообщение от Pacan
нужно сделать такой див что бы при загрузке страницы его не было видно, но при нажатии на ссылку "1" он появлялся!

А когда он должен исчезать?

Pacan 29.11.2010 13:21

с исчезновением проблем нет! div убирается при нажатии на кнопку во flash!

monolithed 29.11.2010 13:22

Хозяйке на заметку:

<script type="text/javascript">
window.onload = function(){
     document.getElementsByTagName('a')[0].onclick = function(){
          var div = document.getElementsByTagName('div')[0];
          div.style.display = (div.style.display == '') ? 'block' : '';
      };
 };
</script>

<style type="text/css">
div {background: red; display: none; width: 50px; height: 50px;}
</style>

<a href="#">click</a>
<div></div>

Pacan 29.11.2010 13:38

проблема была в динамическом размещение swf!

если размещать статически все норм! но требует активации в опере (надо кликнуть по флешке!)

есть идеи как побороть!??

рони 29.11.2010 14:37

Цитата:

Сообщение от Pacan
есть идеи как побороть!??

Есть идея читать документацию ))) в качестве атрибута можно задать класс например
<style type="text/css">
          .hide{
          display: none;
        }
            </style>

добавление класса
var attributes = {};
            attributes.styleclass = "hide";

и в kill (); не будет необходимости

Pacan 29.11.2010 16:01

нашел решение!))

нужно div с flash обвирнуть в другой див и функции уже к нему прописывать! Все работает!

tom 29.11.2010 18:45

:help: люди помогите и мне, пожалуйста, я сегодня целый день проковырялся, но так и не смог победить. :blink:

tom 30.11.2010 02:19

:blink:

рони 30.11.2010 05:38

tom,
Проблему надо локализовать и привести короткий неработающий код...
В вашем случае часто помогает получасовая медитация над мантрой:
ID может быть только один на странице.
Если просветления не наступило можно посмотреть рабочий код ниже...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://radugaspa.ru/mootools.svn.js"></script>
<style type="text/css">
body{font-family:Arial, Helvetica, sans-serif; font-size:13px;}
/* -------------------------------------------------------- */
/* BUTTON													*/
.button{
	color:#000000;
	clear:both;
	display:block;
	float:left;
	font-size:13px;
	font-weight:bold;
	height:31px;
	line-height:31px;
	width:auto;
	margin-right:30px;
}
	a.button {
		text-decoration:none;
	}
	.button span {

		display:block;
		height:31px;
		line-height:31px;
		padding-left:10px;
		padding-right:8px;
		margin-right:20px;
	}
/* -------------------------------------------------------- */
/* MENU														*/
.v-menu{
	border:solid 1px #7F9FBF;
	width:200px;
	clear:both;
}
	ul.v-menu, .v-menu li{
		padding:0; 
		margin:0;
		list-style:none;
	}
	ul.v-menu{
		clear:both;
		margin-top:6px;
		padding:6px 10px;
	}
		.v-menu li a{
			color:#555555;
			font-weight:bold;
			display:block;
			border-top:solid 1px #DEDEDE;
			padding:4px;
			text-decoration:none;
		}
		.v-menu li a:hover{
			color:#999999;
		}

</style>
<!-- Mootools -->
<script type="text/javascript">
		window.addEvent('domready', function(){
			//-vertical
			
			var mySlide = new Fx.Slide('v-menu');
			mySlide.hide();
			$('toggle').addEvent('click', function(e){
				e = new Event(e);
				mySlide.toggle();
				e.stop();
			});
             var mySlide1 = new Fx.Slide('v-menu1');
			mySlide1.hide();
			$('toggle1').addEvent('click', function(e){
				e = new Event(e);
				mySlide1.toggle();
				e.stop();
			});
             var mySlide2 = new Fx.Slide('v-menu2');
			mySlide2.hide();
			$('toggle2').addEvent('click', function(e){
				e = new Event(e);
				mySlide2.toggle();
				e.stop();
			});

		}); 
	</script>

</head>

<body>
<table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="50%" height="45"><h2>Меню</h2></td>
</tr>
<tr>
<td width="50%" valign="top">
  <a href="#" id="toggle" class="button"><span>Нажмите здесь</span></a>
  <div style="clear:both">
  <ul id="v-menu" class="v-menu">
  <li><a href="p1.html">Technology</a></li>
  <li><a href="p2.html">Design</a></li>
  <li><a href="p3.html">Css Gallery</a></li>
  <li><a href="p4.html">Entertainment</a></li>
  <li><a href="p5.html">Programming</a></li>
  </ul>
</div></td>
</tr>
<tr>
<td width="50%" valign="top">
  <a href="#" id="toggle1" class="button"><span>Нажмите здесь</span></a>
  <div style="clear:both">
  <ul id="v-menu1" class="v-menu">
  <li><a href="p1.html">Technology</a></li>
  <li><a href="p2.html">Design</a></li>
  <li><a href="p3.html">Css Gallery</a></li>
  <li><a href="p4.html">Entertainment</a></li>
  <li><a href="p5.html">Programming</a></li>
  </ul>
</div></td>
</tr>
<tr>
<td width="50%" valign="top">
  <a href="#" id="toggle2" class="button"><span>Нажмите здесь</span></a>
  <div style="clear:both">
  <ul id="v-menu2" class="v-menu">
  <li><a href="p1.html">Technology</a></li>
  <li><a href="p2.html">Design</a></li>
  <li><a href="p3.html">Css Gallery</a></li>
  <li><a href="p4.html">Entertainment</a></li>
  <li><a href="p5.html">Programming</a></li>
  </ul>
</div></td>
</tr>
</table>
</body>
</html>

tom 30.11.2010 11:08

Оооо, спасиба, это частично помогло.:)

дело в том, что пункты меню созадются через админку, каждый пункт ссылается на каталог.

Если у каталога нет подкаталогов то в меню он выводися как ссылка на каталог(для это есть свой шаблон), если есть подкатлоги, то в меню этот каталог выводится как раскрывающееся меню с сылками на подкатолиги.(для этого тоже свой шаблон)


на главную меню выводится переменной @leftCatal@, которая подгружает шаблон данного меню

шаблон меню для каталого содержащик подкаталоги(раскрывающеес меню):

<div id="divCatId@catalogId@" class="divCat_off">
<table class="tableCat" border="0" cellpadding="0" cellspacing="0">
                    	<tbody>
                        	<tr>
                            	<td class="tdCatHeader">
<div class="divCatTitle"> <img src="../images/myimg/menu_bullet.png" width="4" height="8" />
<a href="#" id="toggle1">@catalogName@</a> ПЕРЕМЕННАЯ ВЫВОДИ ИМЕНА  всех КАТАЛОГОВ
 <ul id="v-menu1" class="v-menu">
  <li >@catalogPodcatalog@</li> ИМЕНА ВСЕХ ПОДКАТАЛОГОВ ДАННОГО КАТАЛОГА
  </ul>

</div>
                                </td>
                            </tr>
</tbody>
                    </table>
                </div>


Теперь не понятно как тут присвоить уникальный ID КАЖДОМУ
@catalogName@
@catalogPodcatalog@ , так как @catalogName@ и @catalogPodcatalog@ выводится в зависимости от количества каталогов и подкаталогов
или может присвоить ID какому-нибудь блоку в котором будут лежать эти переменный , что-бы скрипт срабатывал для всех элементов этого блока?

monolithed 30.11.2010 15:47

Цитата:

Сообщение от tom
Теперь не понятно как тут присвоить уникальный ID КАЖДОМУ

<script type="text/javascript">
window.onload = function(){
    for(var i=1; i<10; ++i){
        var elem = document.createElement('div');
*!*
        elem.id = 'id'+i;
*/!*
        elem.innerHTML = elem.id;
        document.body.appendChild(elem);
    }
};
</script>


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