bmw318mt Ответов: 2

Расширение объекта с помощью jquery


У меня есть 2 div, где 1-й div имеет 2 текстовых поля, в то время как другой div имеет несколько текстовых полей
Вручную я добавляю имя и значение текстового поля к объекту для 1-го div. Но для второго div я получаю все имена и значения текстовых полей с помощью jQuery, чтобы избежать большого блока аналогичного кода.

var obj = {};
obj.LayoutName = document.getElementById("aSL_stripLayoutName").value;
obj.Version = document.getElementById("aSL_StripLayoutVersion").value;


Затем я хочу расширить объект и добавить все имена текстовых полей и значения в ' obj ' с помощью extend,

$("#aSL_stripLayoutDetails-UpperSection :text").each(function(){//TODO}); 


Что я уже пробовал:

Я попробовал ниже, и пример работает, добавляя известное имя текстового поля "StripDimX" и значение "333".
$.extend(obj, {StripDimX : "333"});


Если я хочу получить имя, я использую это внутри приведенной ниже функции
document.getElementById(this.id).name


и это за ценность
document.getElementById(this.id).value


Но моя проблема заключается в том, как добавить имена и значения к объекту?
$("#aSL_stripLayoutDetails-UpperSection :text").each(function(){
   //$.extend(obj, {StripDimX : "333"});
});

Это конечно не работает:
$("#aSL_stripLayoutDetails-UpperSection :text").each(function(){
 $.extend(obj, {document.getElementById(this.id).name:             document.getElementById(this.id).value});
});


Затем я попробовал ниже, и имя в порядке, но значение добавляется в виде массива:

$("#aSL_stripLayoutDetails-UpperSection :text").each(function(){
        var n = document.getElementById(this.id).name;
        var v = document.getElementById(this.id).value;
          $.extend(obj, { [n] : [v]});
});

2 Ответов

Рейтинг:
12

Karthik_Mahalingam

пробовать

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script>
        var obj = {};
        $(function () { 

        $("#aSL_stripLayoutDetails-UpperSection :text").each(function (index,elem) { 
            var o = {};
            o[elem.name] = elem.value;
            $.extend(obj, o);
        });
        alert( JSON.stringify( obj));


        });
    </script> 

</head>
<body>

    <div id="aSL_stripLayoutDetails-UpperSection">
        <input type="text" name="a" value="aa" />
        <input type="text" name="b" value="bb" />
        <input type="text" name="c" value="cc" />
        <input type="text" name="d" value="dd" />
    </div>

 


</body>
</html>


Рейтинг:
1

bmw318mt

$("#aSL_stripLayoutDetails-UpperSection :text").each(function(){
        var n = document.getElementById(this.id).name;
        var v = document.getElementById(this.id).value;
        var tempObj = new createObject(n,v);
         $.extend(obj, tempObj);
});


function createObject(propName, propValue){
    this[propName] = propValue;
}