2012-06-07 2 views
0

innerHTML을 사용하여 페이지의 특정 요소에 업데이트 된 값을 할당하고 있습니다. 그러나 innerHTML 페이지에서 jquery 작업을 중지하고 페이지의 CSS가 부족합니다.javascript innerHTML 다른

DOM 요소로 바꾸려고했지만 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 감사합니다.

var names =['id','name','quantity','description']; 
    var len = names.length; 
    for (var i = 0; i < len; i++){ 
     var el = document.getElementById(\'product_\'+names[i]+\'_main\'); 
     var el2 = document.getElementById(\'product_\'+names[i]+selection); 
     if(el.hasChildNodes()) {         
     el.replaceChild(el2.firstChild.nodeValue, el.firstChild); 
     } 
     if(el && el2) el.innerHTML=el2.innerHTML; /* this part works, but it caused the page CSS to run and jquery no longer working */ 
     } 
+1

당신이 강조에서 볼 수 있듯이, 당신은 구문 오류를 가지고 있습니다. – Bergi

+0

@Bergi 내 파일에 구문 오류가 없습니다, 그것은 내가 실수 한 긴 변수 중 일부를 최소화했습니다. 코드를 편집했습니다 : – Sylph

+0

전혀 백 슬래시가 없어야합니다. – Bergi

답변

0
el.replaceChild(el2.firstChild.nodeValue, el.firstChild); 

뭐라구? 당신은 nodeValue를 대체 할 수 없습니다, 당신은 단지 노드를 대체 할 수

el.replaceChild(el2.firstChild, el.firstChild); 

이이 elel2firstChild 이동합니다. 복사하려면 먼저 복제해야합니다. 모든 아이들을 원한다면, 그것들을 반복 할 필요가 있습니다.

firstChild가 텍스트 노드 인 경우, 쉽게 (재) 수는 그 값을 설정하고, EL2의 그 복사

if (el.firstChild && el.firstChild.nodeType == 3 
    && el2.firstChild && el2.firstChild.nodeType == 3) 
    el.firstChild.nodeValue = el2.firstChild.nodeValue; 
+0

답장을 보내 주셔서 감사합니다. el.replaceChild (el2.firstChild, el.firstChild)를 사용하고 있습니다. 그러나 그 값은 대체되지 않았습니다. 그러나 FF 콘솔에서 "el is null"오류가 발생합니다. 이것이 의미하는 바는 무엇이며 가치를 대체 할 수 없다는 뜻입니까? – Sylph

+0

즉,'document.getElementById'는 아무것도 발견되지 않았습니다 - 지정된 id를 가진 요소가 없습니다. if-condition에서 확인해야 할 수도 있습니다. – Bergi

+0

그래,하지만 차이는 없지만 innerHTML의 작동 방식과 같이 내용이 어떻게 대체되지 않았는지 이해할 수 없습니다. 이것은 "150gm"에서 "200gm"또는 "Cold"와 같은 텍스트를 "Hot"로 대체하는 것입니다. – Sylph

0

이미 jQuery를 사용하고 있기 때문에, 당신은 .html 중에서() 메서드를 사용할 수 있습니다

e1.html(e12.html()); 

이이 같은 작업을 수행해야한다 : 당신이있는 경우

el.innerHTML=el2.innerHTML; 
+1

해야합니다. 그래서 무엇이든 깨는 것은 여전히 ​​깨질 것입니다. – Quentin

+0

"innerHTML로 인해 페이지의 jquery가 작동하지 않습니다." 나는 당신이이 질문에 옳을지도 모르지만이 가정에 따라 갔다. – Hassan

+0

@Hassan, 답변 해 주셔서 감사합니다. 사실 Joomla 및 Jquery 휴식을 사용하고있는 다른 구성 요소를 일하고 있어요. 그러나이 특정 부분에 대해서는 자바 스크립트에서만 사용됩니다. 어쨌든 나는 당신의 대답을 자바 스크립트 폼에 넣을 수 있습니까? 감사합니다. – Sylph

0

을 JQuery가 이미 페이지에로드되어 JQuery 선택기와 $ (element) .html()을 사용하여 innerHTML을 얻을 수있다.

var names =['id', 'name', 'quantity', 'description']; 

for (var i = 0; i < names.length; i++){ 
    var el = $("#product_"+names[i]+"_main"); 
    var el2 = $("#product_"+names[i]+selection); 

    if (el.children().size() > 0) {         
     // Your code here 
    } 

    if (el && el2) { 
     el.html() = el2.html(); 
    } 
} 

테스트되지 않은 코드.

+0

테스트되지 않았을뿐만 아니라 작동하지 않습니다. – Bergi