Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   иммитация клика (https://javascript.ru/forum/misc/23903-immitaciya-klika.html)

GuardCat 13.12.2011 10:14

Функция кликает по первому родителю всех элементов с указанным классом. Похоже, это то, что вы хотели. Вставьте между тегами <script></script>.
function clickClassParent(className) {
	var victimsArray = document.querySelectorAll("." + className), x;
	var victimParent;
	for (x = 0; x < victimsArray.length; x++) {
		victimParent = victimsArray[x].parentNode;
		if (victimParent.onclick && victimParent.onclick instanceof Function) {
			victimParent.onclick();
		}
	}
}

clickClassParent("world_button_inactive");


Вот она же на тестовом стенде. Ваши функции в onclick заменены на alert() для тестирования. Также display внешнего div изменён с none на block. Внимание, запустив тест получите 5 последовательных alert'ов!
<!DOCTYPE html>
<html>
	<head></head>
	<body>
		<div id="inactive_server_list" style="display:block;overflow:visible;margin-bottom:1px;margin-top:10px;clear:both;">
			<a href="#" onclick="alert(4)">
				<span class="world_button_inactive">Мир 12</span>
			</a>
			<a href="#" onclick="alert(3)">
				<span class="world_button_inactive">Мир 13</span>
			</a>
			<a href="#" onclick="alert(2)">
				<span class="world_button_inactive">Мир 15</span>
			</a>
			<a href="#" onclick="alert(1)">
				<span class="world_button_inactive">Мир 16</span>
			</a>
			<a href="#" onclick="alert(0)">
				<span class="world_button_inactive">Speed</span>
			</a>
		</div>
		<script>
			function clickClassParent(className) {
				var victimsArray = document.querySelectorAll("." + className), x;
				var victimParent;
				for (x = 0; x < victimsArray.length; x++) {
					victimParent = victimsArray[x].parentNode;
					if (victimParent.onclick && victimParent.onclick instanceof Function) {
						victimParent.onclick();
					}
				}
			}

			clickClassParent("world_button_inactive");
		</script>
	</body>
</html>

Azazello77 13.12.2011 20:50

спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

Livanderiaamarum 13.12.2011 22:46

Цитата:

Сообщение от GuardCat (Сообщение 142428)
var victimsArray = document.querySelectorAll("." + className), x;
	var victimParent;

ахахахаха 2 раза переменные декларирует))))

Livanderiaamarum 13.12.2011 22:47

Цитата:

Сообщение от Azazello77 (Сообщение 142561)
спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);


ахахах ну вы и быдлокодеры ребят)) не в обиду но код красиво писать не умеете)

зачем несколько раз оператор var вызывать???

Livanderiaamarum 13.12.2011 22:48

var cmdname="script",
cmdtime=10,
cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

GuardCat 13.12.2011 22:55

Livanderiaamarum, а в чем неправильность? Это две разные переменные. Или следует декларировать все переменные в одну строку?
Поясните, пожалуйста, любителю, чем плохо вызывать var дважды или укажите куда копать, буду благодарен. Обычно, ограничиваю строку несколькими переменными, а затем начинаю новую строку var, чтобы не терять в читабельности, записывая километровые строки. Это неверно?

melky 13.12.2011 22:57

Цитата:

Сообщение от Azazello77 (Сообщение 142561)
спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

зачем для этого использовать jquery ?

Livanderiaamarum 13.12.2011 23:58

Цитата:

Сообщение от GuardCat (Сообщение 142617)
Livanderiaamarum, а в чем неправильность? Это две разные переменные. Или следует декларировать все переменные в одну строку?
Поясните, пожалуйста, любителю, чем плохо вызывать var дважды или укажите куда копать, буду благодарен. Обычно, ограничиваю строку несколькими переменными, а затем начинаю новую строку var, чтобы не терять в читабельности, записывая километровые строки. Это неверно?

нет, тут как бы оптимальность мы читабильность. просто считается хорошим тоном декларировать переменные вверху и сразу. это ОГРОМНО облегчает работу интерпритатору. Там более js использует высасывание направленное вверх. Если вам так читабильней то пользуетесь). обфуксатор все поправит


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