Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2016, 16:18
Аватар для light
Аспирант
Отправить личное сообщение для light Посмотреть профиль Найти все сообщения от light
 
Регистрация: 11.04.2014
Сообщений: 60

Получить текущий 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>
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2016, 16:48
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Никак, функция имеет свой изолированный Scope и залезть в него извне не получится. Вы лучше опишите подробно, что вам нужно сделать, возможно лезть внутрь функции и не надо, или её можно переписать.
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2016, 17:00
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

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>
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2016, 17:05
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

Сообщение от 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>
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2016, 17:15
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

scrollquest,
Вам стоит отучаться писать подобный говнокод как можно быстрее, а также матчасть подтянуть. В функции каждую переменную стоит через var объявлять, чтобы не плодить глобальных переменных, также в начале скрипта лучше 'use strict' ставить, это от многих ошибок убережёт. И обращаться к id элемента напрямую, а не через getElementById() это тоже bad practice.
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2016, 17:21
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

Sigizmund2012,
Я без тебя разберусь, что мне писать, а что нет. Поменьше языком ворочай, побольше мозгами, глядишь, в люди выбьешься. А на данный момент ты ноль
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2016, 17:30
Аватар для light
Аспирант
Отправить личное сообщение для light Посмотреть профиль Найти все сообщения от light
 
Регистрация: 11.04.2014
Сообщений: 60

Сообщение от 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);
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2016, 18:27
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

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>
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2016, 18:30
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

light, куда передавать номер нужно и что значит соответствующе её записать?
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2016, 18:35
Аватар для light
Аспирант
Отправить личное сообщение для light Посмотреть профиль Найти все сообщения от light
 
Регистрация: 11.04.2014
Сообщений: 60

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);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onclick, this Как корректно получить ссылку на текущий элемент вызова. abstract Events/DOM/Window 2 25.07.2017 12:18
altjs получить текущий store Konstantin1706 Библиотеки/Тулкиты/Фреймворки 0 20.12.2015 19:21
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
jquery получить родителя и обратится к элементу внутри по class _Eldar_ Общие вопросы Javascript 6 05.04.2015 19:32
текущий DOM-элемент документа в ИЕ hmel Events/DOM/Window 1 11.01.2010 01:50