2010-07-12 5 views
4

간단한 대답이지만 확실하지 않습니다.자바 스크립트 객체 내의 문자열 연결

정상적인 문자열을 JavaScript로 연결하는 방법을 알고 있지만 개체 내에서 어떻게 처리 할 수 ​​있습니까?

필자는 XML 파일을 읽고 링크 목록에 대한 HTML을 작성하면서이 작업이 필요합니다. 루프를 통과 할 때마다 링크가 포함 된 <li>을 새로 만들고 싶습니다. 어떻게 문자열의 현재 값을 얻은 다음 끝에 새 링크를 추가합니까? XML을 읽은 후에 HTML을 페이지에 추가합니다.

이 나는 ​​시도했다 : 어떤 성공

carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>"; 

.

도움을 주시면 감사하겠습니다.

+1

문자열 연결 구문에 관한 한 괜찮습니다. 여러분의 문제는 다른 곳에있을 수 있습니다 (예 :'carParks' 객체 자체 또는 호출 코드 등). –

+0

나는 네 생각을 생각해. 나는 방금 같은 코드로 간단한 테스트 스크립트를 만들었고 작동하고있다. 문제는 다른 곳에서 발생해야합니다. 감사. –

답변

3

개체 속성과의 문자열 연결은 다른 것과 동일합니다. 이론적으로는 carParks.links이 쓰기 가능한 속성 인 경우이면 코드가 작동해야합니다. 연산자를 사용할 때를 제외하고 + 또는 += 연산자를 사용하여 문자열 연결을 수행하면 피연산자가 문자열로 변환됩니다. 예를 들어 :

var carParks = {}; 
carParks.links = carParks.links + "Test"; 
// -> "undefinedTest", because carParks.links was undefined 

오류 메시지가 표시하는 경우, carParks 정의 및 쓰기 가능한 속성을 가진 자바 스크립트 객체 (외부 인터페이스의 예를 들면,하지 부분)입니다 있는지 확인합니다. 오류가 표시되지 않으면 carParks.links가 숫자가 아닌지 확인하십시오. 도움이되지 않으면 주변 코드를 조금 더 게시하십시오. 다른 코드를 다시 찍어 보겠습니다.

+0

감사합니다. Andy, 구문이 정확했지만 이제는 코드에서 특정 속성을 덮어 쓰는 중이었습니다. –

0

링크 톤을 생성하는 경우 try/w array.join(); 반복

CONCAT 문자열 또는 당신이 ... 당신을 위해 DocumentFragment가이 추가됩니다 그냥 ducument 조각 cildNodes을 CONCAT을 html로 DocumentFragment가 브라우저를 만드는 것보다

var tmp = []; 

for ([iterate over xml]) { 
    tmp.push("<li><a href=\"#\">car park</a></li>"); 
} 

carParks.links = tmp.join(''); 

빨리 콘크리트에 추가 요소. 그리고 ... 레이아웃이없는 요소 APPEND 당처럼, 한 번 계산, 당신은 문자열 CONCAT 실행 시간을 걱정하지 않아도

var docFrag = document.createDocumentFragment(); 
for ([iterate over xml]) { 
    var current = document.createElement('li'); 
    current.innerHTML = "<a href=\"#\">car park</a>"; 
    docFrag.appendChild(current); 
} 

theElementToAppendMyList.appendChild(docFrag); 
-1

당신은 UL 객체를 생성하고 각 LI 당신을 위해 그것을에 appendChild를 사용한다 want

0

이것은 기본 문자열 연결이지만 성능 고려 사항에 따라이를 수행하는 데 다른 방법이 있습니다. 본질적으로 언어가 제공하는 문자열 연결 연산자 또는 배열 결합을 사용합니다. 전자는 꽤나 직선이지만 나이가 든 브라우저에서는 느리지 만 후자는 더 빠릅니다.

예에서 문자열 연결을 사용하고 있습니다.또 다른 방법은 += 연산자를 사용하는 것입니다 :

carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>"; 

가입 방법은 같습니다 배열 다음

var buffer = []; 
while(node != null) { 
    buffer.push("<li><a href=\"#\">car park</a></li>"); 
} 
carParks.links = buffer.join(''); 

는 접근 방식을 결합 배열은 적은 쓰레기를 생산

하지만 난 그게 더 실행 보았다 큰 (10,000 개 이상의 항목) 목록이있는 최신 브라우저에서 천천히