2012-01-19 4 views
2

나는 단순한 기능이라고 생각했지만 내가 무엇을 놓치고 있는지 알아낼 수 없습니다. 이 내가지고있어 오류가 missing : after property id이며 참조 : 여기 누락 : 속성 ID 후 - javascript

var data = { "'" + $(this).attr('id') + "'" : "'" + $(this).val() + "'" }; 

함수입니다 : 당신은 그와 같은 개체를 만들 수 없습니다

function ArrayPush($group) { 
    var arr = new Array(); 
    $group.find('input[type=text],textarea').each(function() { 
     var data = { "'" + $(this).attr('id') + "'" : "'" + $(this).val() + "'" }; 
     arr.push(data); 
    }); 
    return arr; 
} 
+2

나는 4 사람들은 서로 –

+0

완전히 무관의 초 이내에 같은 일을 대답 방법을 좋아한다 : 왜'this.id'를? – sdleihssirhc

+0

중복 된 답변 소유자가 질문을 삭제할 수 있습니까? 나는 OP가 크고 분명한 점을 의심한다. –

답변

-1

이 시도 :

function ArrayPush($group) { 
    var arr = new Array(); 
    $group.find('input[type=text],textarea').each(function() { 
     arr[$(this).attr('id')] = $(this).val(); 
    }); 
    return arr; 
} 
+1

이 대답은 잘못되었습니다. _array_의 _named_ 속성을 설정하고 배열의 _numbered_ 인덱스 (OP의 원래 코드 당)로 개체를 푸시하지 않고 _object_에 키를 추가하는 것이 아니라 더 일반적인 결과가됩니다. – Alnitak

+0

'$ (this) .attr ('id')'=='this.id' &&'$ (this) .val()'=='this.value'하지만 jQuery 함수를 사용하지 않는 것이 빠릅니다. 'href'와 같은 일부 속성은 jQuery를 통해 얻는 것이 좋습니다 (페이지의 기본 URL로 정규화되기 때문에) – Jasper

+0

@Jasper AFAIK'href'는 _attribute_ 또는 _property_ 중 어느 것을 가져 왔는지에 따라 다르며 그렇지 않습니다. – Alnitak

9

-해야 객체 리터럴에서 "키를" 상수, 변수 또는 표현식이 아닙니다. 따라서

myArray[key] = value; 

당신이 필요합니다 : 키는 배열과 같은 대신 구문 필요가 변수 인 경우

당신의 모든 필드 그러나

var data = {}; // empty object 
data[$(this).attr('id')] = $(this).val(); 

실제로 일반 HTMLInputElement 또는 HTMLTextAreaElement 객체 이것을 사용하여 값 비싼 jQuery 호출을 피하십시오.

var data = {}; // empty object 
data[this.id] = this.value; 
당신이 객체의 배열을 만드는 이유 (10)

나는 또한 질문 것 - 키가 모두 고유해야합니다, 나는 일반적으로 하나의 객체 반환 기대 :

function formObjectBuild($group) { 
    var obj = {}; 
    $group.find('input[type=text],textarea').each(function() { 
     obj[this.id] = this.value; 
    }); 
    return obj; 
} 
1

당신은 재산을 구축 할 수 있습니다 그런 이름은 동적으로. 대신

function ArrayPush($group) { 
    var arr = new Array(); 
    $group.find('input[type=text],textarea').each(function() { 
     var data = {}; 
     data [$(this).attr('id')] = $(this).val(); 
     arr.push(data); 
    }); 
    return arr; 
} 
+2

배열은 거의 항상 리터럴 구문'[]'으로 만들어야합니다. –

1
var data = {}; 
data[$(this).attr('id')] = $(this).val(); 

사용하는 것이. 그렇지 않으면 당신은 어떤 종류의 평가를하려고합니다. ...

1

변경하십시오.

var data = {}; 
data[$(this).attr('id')] = $(this).val();