2013-03-09 3 views
0

제목이 정확하지 않을 수 있습니다. 질문을 지능적으로 표현하는 방법을 모르겠습니다. 지능이 부족할 수도 있습니다 ... anyhoo : CMS의 일부로, HTML 양식 텍스트 영역에 입력 된 데이터의 미리보기를 생성하는 자바 스크립트 기능이 있습니다. 이제 폼에는 분명히이 텍스트 영역 이외의 다른 부분이 포함되어 있으므로 "title"및 "summary"에 대한 변수를 포함하도록 함수를 확장하고 싶습니다. 자바 스크립트를 알지 못해서 어떻게해야 할 지 모르겠다. 그래서 저 밖의 어떤 영혼이 저를 교육하는 것처럼 느껴지면 (가급적이면 시각적 인 예를 들자면 "잘 물건을 물건에 넣고 흔들 리면 안됩니다 ...") 나는 가장 감사 할 것입니다.자바 스크립트 함수에 둘 이상의 변수가 있습니까?

내가 가진 기능은 이것이다 :

// generate preview 
function updatePreview() { 
    if (document.getElementById('txt')) { 
    var body = document.getElementById('txt').value; 
    document.getElementById('preview').innerHTML = body; 
    } 
} 

제목의 양식 필드는 "제목"라는 및 요약 텍스트 영역은 "sumtxt"상상 함수가 될 수 있도록 이름이 뭔가 같은 :

// generate preview 
function updatePreview() { 
    if (document.getElementById('title')+('txt')+('sumtxt')) { 
    var body = document.getElementById('title')+('txt')+('sumtxt').value; 
    document.getElementById('preview').innerHTML = body; 
    } 
} 

...하지만 그건 나에게도 옳은 것처럼 보이지 않습니다. 제안 사항? 감사합니다. .

답변

1

document.getElementById('txt')는 DOMNode 또는 null 중 하나이며, document.getElementById('txt').value 그래서 그냥 할 문자열입니다 :

if (document.getElementById('title') !== null && document.getElementById('txt') !== null && document.getElementById('sumtxt') !== null) { 
    var body = document.getElementById('title').value + document.getElementById('txt').value + document.getElementById('sumtxt').value; 
    ... 
} 
+0

감사합니다! 매우 감사. 이제 자바 스크립트를 배울 것이다 ...;) –

0

당신은 그들에게 하나 하나를 확인할 수 있습니다.

function updatePreview() { 
    var body = ""; 
    if (document.getElementById('title')) { 
     body += document.getElementById('title').value; 
    } 
    if (document.getElementById('txt')) { 
     body += document.getElementById('txt').value; 
    } 
    if (document.getElementById('sumtxt')) { 
     body += document.getElementById('sumtxt').value; 
    } 
    document.getElementById('preview').innerHTML = body; 
} 

또는, 지원 기능을 쓸 수 있습니다 :

function getElementValueById(id){ 
    var node = document.getElementById(id); 
    var value = null; 
    if (node) { 
     value = node.value; 
    } 
    return value; 
} 

그리고 updatePreview()에서 :

function updatePreview() { 
    var title = getElementValueById("title"); 
    var txt = getElementValueById("txt"); 
    var sumtxt = getElementValueById("sumtxt"); 
    if(title && txt && sumtxt){ 
     document.getElementById('preview').innerHTML = title + txt + sumtxt; 
    } 
} 

그것이 도움이 희망을.

0

프리츠 대답에 걸릴 ..

var eleholder = ['title','txt','sumtxt'], body= ""; 
for(i=0;i<eleholder.length;i++){ 
    if(document.getElementById(eleholder[i]) !== null){ 
     body += document.getElementById(eleholder[i]).value; 
    }else{ 
     body = ""; 
     break; 
    } 
    } 
+0

이 코드는 아마도 당신이 원하는 것을하지 않을 것입니다. 어쨌든 내 코드와 동등하지 않습니다. 'for' 루프는 나쁜 생각입니다. – Halcyon

관련 문제