Javascript.RU

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

Помогите с выводом блоков
Помогите разобраться, вообщем есть такой код:

В HTML 1 блок #idDiv

Скрипт:

$(document).ready(function(){

function Boxs(width,height,bgColor){
this.width = width;
this.height = height;
this.bgColor = bgColor;
}

var box = new Boxs(250,250,'green');
var box2 = new Boxs(200,200,'yellow');

//Создание коробки
Boxs.prototype.createBox = function(){
$('#idDiv').append('
');
$('.clBox').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
}

box.createBox();
box2.createBox();

});


Когда я вызываю метод "createBox()" оно создает блок с заданными параметрами в объекте "box", но если я после этого вызову тот же метод но уже для другого объекта который имеет другие параметры, то "this" будет брать параметры из "box2", и сделает 2 блока со свойствам "box2".

Как сделать так что бы у меня вышли 2 блока с разными параметрами.

Насколько я понял "this" берется из последнего вызова метода, как можно это исправить?

Просьба помочь.
Ответить с цитированием
  #2 (permalink)  
Старый 26.01.2014, 21:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от hfts_rider
Как сделать так что бы у меня вышли 2 блока с разными параметрами.
а разве это не так?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
     $(document).ready(function(){

function Boxs(width,height,bgColor){
this.width = width;
this.height = height;
this.bgColor = bgColor;
}

var box = new Boxs(250,250,'green');
var box2 = new Boxs(200,200,'yellow');

//Создание коробки
Boxs.prototype.createBox = function(){
$('#idDiv').append(
$('<div/>').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'})
);
}

box.createBox();
box2.createBox();

});

  </script>
</head>

<body>
   <div id="idDiv" ></div>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2014, 00:03
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

В этой строчке была проблема, я понял... я обновлял при втором вызове css (.clBox)...

==
Boxs.prototype.createBox = function(width,height,bgColor){
		$('#idDiv').append('<div class="clBox"></div>');
		$('.clBox').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
	}

==

Спасибо за помощь)
Ответить с цитированием
  #4 (permalink)  
Старый 27.01.2014, 00:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

hfts_rider,
ваш вариант ))) чуть дополненный
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
     $(document).ready(function(){

function Boxs(width,height,bgColor){
this.width = width;
this.height = height;
this.bgColor = bgColor;
}

var box = new Boxs(250,250,'green');
var box2 = new Boxs(200,200,'yellow');

//Создание коробки
Boxs.prototype.createBox = function(width,height,bgColor){
		$('#idDiv').append('<div class="clBox"></div>');
		$('.clBox:last').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
	}


box.createBox();
box2.createBox();

});

  </script>
</head>

<body>
   <div id="idDiv" ></div>
</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 27.01.2014, 00:39
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Да! Спасибо! То что мне и нужно было "$('.clBox:last')"
Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2014, 00:52
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Еще одно))) Подскажите как сделать теперь rotate(transform) для каждого элемента, что бы был универсальный метод, вот у меня крутит все блоки у которых класс определенный, а как можно переделать что бы при вызове метода "rotateBox()" для каждого блока он делал rotate отдельно?

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
$(document).ready(function(){
	
	function Boxs(width,height,bgColor){
		this.width = width;
		this.height = height;
		this.bgColor = bgColor;
	}
	
	var box = new Boxs(250,250,'green');
	var box2 = new Boxs(200,200,'yellow');

	//Создание коробки
	Boxs.prototype.createBox = function(width,height,bgColor){
		$('#idDiv').append('<div class="clBox"></div>');
		$('.clBox:last').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
	}
	
	box.createBox();
	box2.createBox();


	var i = 0;
	var timer;
	//Поворот коробки
	Boxs.prototype.rotateBox = function(){
			$('.startInterval').click(function(){
				if(!timer){
					timer = setInterval(function(){
					$('.clBox').css({'transform' : 'rotate('+ i++ +'deg)'});
					if(i === 180){
						i = 0;
					}
					},30);
				}
			});
	};
        
    $('.stopInterval').click(function(){
		clearInterval(timer);
		timer = null;
	});

	box2.rotateBox();

});
</script>
</head>

<body>
	<div id="idDiv"></div>
	<div class="startInterval">[START]</div>
	<div class="stopInterval">[STOP]</div>
</body>

</html>
Ответить с цитированием
  #7 (permalink)  
Старый 27.01.2014, 01:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

hfts_rider, жми кнопку макс START
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .clBox{
     -webkit-transition: all 3s ease-in-out;
    -moz-transition: all 3s ease-in-out;
    -o-transition: all 3s ease-in-out;
    -ms-transition: all 3s ease-in-out;
    transition: all 3s ease-in-out;
  }

  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
$(document).ready(function(){

	function Boxs(width,height,bgColor){
		this.width = width;
		this.height = height;
		this.bgColor = bgColor;
	}

	var box = new Boxs(250,250,'green');
	var box2 = new Boxs(200,200,'yellow');

	//Создание коробки
	Boxs.prototype.createBox = function(width,height,bgColor){
		$('#idDiv').append('<div class="clBox"></div>');
		$('.clBox:last').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
        this.el = $('.clBox:last')
	}

	box.createBox();
	box2.createBox();


	var i = 0;
	var timer;
	//Поворот коробки
	Boxs.prototype.rotateBox = function(i){  

				   this.el.css({'transform' : 'rotate('+ i +'deg)'});

	};



	box2.rotateBox(45);
    $('.startInterval').click(function(){
		   box.rotateBox(25);
	});
});
</script>
</head>

<body>
	<div id="idDiv"></div>
	<div class="startInterval">[START]</div>
	<div class="stopInterval">[STOP]</div>
</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 30.01.2014, 20:36
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Спасибо! "this.el", то что нужно!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт выравнивания высоты блоков razorg1991 Элементы интерфейса 13 15.01.2017 00:04
Переключение блоков. lon Элементы интерфейса 7 03.07.2013 09:08
Открытие див блоков ПОМОГИТЕ elizaveta199309 Общие вопросы Javascript 4 30.12.2012 14:33
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Помогите с выводом в теге textarea sanhai Общие вопросы Javascript 4 11.05.2010 18:36