Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить текущий id (https://javascript.ru/forum/misc/64737-poluchit-tekushhijj-id.html)

light 01.09.2016 16:18

Получить текущий id
 
Добрый день. Подскажите пожалуйста, как можно получить id (а лучше data-id) вне функции.
Вот так все работает.
<div id="id3"  onclick="give(this.id)" data-id="3"></div>

<script>  	  
	function give(val) { numbPic = val; console.log(numbPic);} 
</script>


Но если вынести console.log за пределы, то ничего не отображается.
<script>  	  
	function give(val) { numbPic = val; }
	console.log(numbPic);	
</script>

Sigizmund2012 01.09.2016 16:48

Никак, функция имеет свой изолированный Scope и залезть в него извне не получится. Вы лучше опишите подробно, что вам нужно сделать, возможно лезть внутрь функции и не надо, или её можно переписать.

scrollquest 01.09.2016 17:00

Sigizmund2012,
Че ты несешь, какой нахуй скоп? Как у него выведется переменная, которая еще не определена? Вы охуели что-ли тут, профессора?
<html>
<body>

<div id="id3"  onclick="give(this.id)" data-id="3">click me before</div>
<button id = "b">
  show id
</button>

<script>       
    function give(val) { numbPic = val; }
    b.onclick = function(){console.log(numbPic);  }
</script>
</body>
</html>

scrollquest 01.09.2016 17:05

Цитата:

Сообщение от light
а лучше data-id

<html>
<body>

<div id="id3"  onclick="give(this)" data-id="3">click me before</div>
<button id = "b">
  show id
</button>

<script>       
    function give(object) { v = object.getAttribute("data-id") }
    b.onclick = function(){console.log(v)}
</script>
</body>
</html>

Sigizmund2012 01.09.2016 17:15

scrollquest,
Вам стоит отучаться писать подобный говнокод как можно быстрее, а также матчасть подтянуть. В функции каждую переменную стоит через var объявлять, чтобы не плодить глобальных переменных, также в начале скрипта лучше 'use strict' ставить, это от многих ошибок убережёт. И обращаться к id элемента напрямую, а не через getElementById() это тоже bad practice.

scrollquest 01.09.2016 17:21

Sigizmund2012,
Я без тебя разберусь, что мне писать, а что нет. Поменьше языком ворочай, побольше мозгами, глядишь, в люди выбьешься. А на данный момент ты ноль

light 01.09.2016 17:30

Цитата:

Сообщение от Sigizmund2012
Никак, функция имеет свой изолированный Scope и залезть в него извне не получится. Вы лучше опишите подробно, что вам нужно сделать, возможно лезть внутрь функции и не надо, или её можно переписать.
__________________

Есть скрипт кропа картинок. Он в общем то работает отлично.
Но у меня несколько форм, и нужно передавать номер формы, что бы соответствующе её записать, но как это сделать я не очень понимаю.

<div id="candy1" onclick="give(this.id)" class="left picAdd" data-id="1"></div> 			 
<div id="candy2" onclick="give(this.id)" class="left picAdd" data-id="2"></div>
var croppicContainerEyecandyOptions = {		 
		uploadUrl:'http://'+window.location.hostname+'/img_save_to_file.php',
		cropUrl:'http://'+window.location.hostname+'/img_crop_to_file.php',
		imgEyecandy:false 
}		
var candy1 = new Croppic('candy1', croppicContainerEyecandyOptions);	
var candy2 = new Croppic('candy2', croppicContainerEyecandyOptions);

Sigizmund2012 01.09.2016 18:27

light,
Не до конца понимаю, что вы хотите сделать. Данный код передаёт в конструктор Croppick данные из атрибута data-id:
<div id="candy1" class="left picAdd" data-id="1"></div>
<div id="candy2" class="left picAdd" data-id="2"></div>

<script>
	'use strict';
	var croppicContainerEyecandyOptions = {		 
		uploadUrl:'http://'+window.location.hostname+'/img_save_to_file.php',
		cropUrl:'http://'+window.location.hostname+'/img_crop_to_file.php',
		imgEyecandy:false 
};

function cropper( event ){
	var data = this.getAttribute( 'data-id' );
	new Croppic( data, croppicContainerEyecandyOptions);
}

var candy1 = document.getElementById( 'candy1' );
var candy2 = document.getElementById( 'candy2' );
candy1.onclick = cropper;
candy2.onclick = cropper;

</script>

light 01.09.2016 18:35

Sigizmund2012,
Мне нужно передать в файл img_save_to_file.php переменную 1 или 2.

Что то вроде такого (это не работает)
var croppicContainerEyecandyOptions = {		 
 uploadUrl:'http://'+window.location.hostname+'/img_save_to_file.php?f1='+$('#candy1').attr('id'),
 cropUrl:'http://'+window.location.hostname+'/img_crop_to_file.php'
}		
var candy1 = new Croppic('candy1', croppicContainerEyecandyOptions);

light 01.09.2016 18:38

Цитата:

Сообщение от Rise (Сообщение 427421)
light, куда передавать номер нужно и что значит соответствующе её записать?

Нужно передать в php файл - img_save_to_file.php
ID или data-id элемента по которому кликнули.

Сам скрипт - http://www.croppic.net
Мне нужно знать с какой именно формы, был отправлен запрос.


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