IgorBee
@IgorBee
JS,VBS,3D.Web с 07.2015

Как в объект записать значения при вызове функции?

var quastObj={};

  console.log(getCoords(ansNow,quastObj));


function reterToPlace(){
        var quastObj={};
        getCoords(ansNow,quastObj);
        console.log(quastObj);
        target.style.cssText="transform: translateY("+ quastObj.top+"px;)";
    }
    reterToPlace();
    
    function getCoords(nameId,nameObj){
 	var coord=nameId.getBoundingClientRect();

 	return   nameObj={
 		top:coord.top,
 		left:coord.left,
 		bottom:coord.bottom,
 		right:coord.right
 	}

 };


Первый лог верно отдаёт координаты,но в объект он их не записывает почему то,как записать?

Записывать напрямую в getCoords я бы не хотел потому что она должна быть многоразовой,то есть ниже я её буду для других объектов вызывать.
  • Вопрос задан
  • 501 просмотр
Решения вопроса 2
theWaR_13
@theWaR_13
Проблема вашего кода в том, что функция getCoords() возвращает объект, но вы никуда его не присваиваете. Я со смартфона пишу, так что код вам не дам. Вам не нужно передавать объект в параметре, внутри функции reterToPlace() вам нужно сделать что то вроде quastObj = getCoords(ansNow) (только 1 параметр) и все будет работать.
Ответ написан
IgorBee
@IgorBee Автор вопроса
JS,VBS,3D.Web с 07.2015
var coord1, coord2;
function getCoords(nameId){ 
var coord=nameId.getBoundingClientRect(); 

return { 
top:coord.top, 
left:coord.left, 
bottom:coord.bottom, 
right:coord.right 
}; 
};
coord1=getCoords(nameId);
coord2=getCoords(nameId2);


Ответ от Максим,спасибо тебe^_^

И Павел:

function getCoords(nameId, quastObj){ 
var coord=nameId.getBoundingClientRect(); 

quastObj.top = coord.top; 
quastObj.left = coord.left; 
quastObj.bottom = coord.bottom; 
quastObj.right = coord.right; 
};
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@IceJOKER
Web/Android developer
Ни по коду, ни по объяснению не понял чего вы именно хотите.
Какой-то громоздкий код.

Если вы хотите изменить в функции уже объявленную переменную, то НЕ НУЖНО объявлять его заново с помощью var, просто присвойте ему значение.

var test = 1;

function f(){
  test = 2;
  //var test = 2 создаст новую переменную
}

console.log(test);  //1

f();

console.log(test); //2
Ответ написан
function getCoords(nameId,nameObj){
 	var coord=nameId.getBoundingClientRect();

 	return   nameObj={
 		top:coord.top,
 		left:coord.left,
 		bottom:coord.bottom,
 		right:coord.right
 	}

У вас фукция принимает в параметрах nameObj и его же возвращает ? Тут нужен конструктор , а не то что вы понапихивали.
Ответ написан
@vshvydky
Объявляя var quastObj={}; внутри функции вы внутри этой функции перекрываете доступ к глобальному объекту, а дальше, чтобы вы не делали внутри нее будет работа с пустым объектом.
А вообще да, присоединяюсь к непонимающим этот код, зачем такое городить?
И да, любопытно увидеть вызов функции для другого объекта и зачем вообле ретурнить из функции что-то еще и с присвоением в ретурне, а потом просто как с процедурой ей пользоваться. Короче я хз, вам бы в учебник и читать....
В догонку, выполните этот код, он по вашим мативам скажем так
var obj = {name: 1};
function test(obj){
return obj = {name: 2};
}
console.log(obj);
test(obj);
console.log(obj); 
console.log(test(obj));

заметьте, что даже после исполнения функци test глобальный объект не перезаписываается, тоже самое у вас просходит в участке var quastObj={}; getCoords(ansNow,quastObj);, хотите возвращать объект, делайте иначе
function returnObject(){
return { data: "blablabla" };
}
function run() {
var obj = returnObject();
console.log(obj);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы