2012-04-30 2 views
2

3 개의 JSP 페이지를 생성 중입니다. 각 페이지마다 다른 ID를 가진 4 개의 상자가 있습니다 (1 페이지의 상자 1, 상자 2, 상자 3, 상자 4, 페이지 2의 상자 5, 상자 6, 상자 7, 상자 8, 상자 9, 상자 10, 상자 11, 페이지 12의 상자 12). 다음은 1 페이지의 샘플 코드입니다.HTML의 경고 제거 중

<div class="dragableBox" id="box1">CAT</div> 
<div class="dragableBox" id="box2">DOG</div> 
<div class="dragableBox" id="box3">HORSE</div> 
<div class="dragableBox" id="box4">TIGER</div> 

각 페이지에는 스크립트도 있습니다. 스크립트에서 나는 의도적으로 위의 모든 id를 함수의 매개 변수로 사용합니다. 나는 이것이 내 프로그램이 작동 할 수있는 유일한 방법입니다 알고

dragDropObj.addSource('box1',true); 
dragDropObj.addSource('box2',true); 
dragDropObj.addSource('box3',true); 
dragDropObj.addSource('box4',true); 
dragDropObj.addSource('box5',true); 
dragDropObj.addSource('box6',true); 
dragDropObj.addSource('box7',true); 
dragDropObj.addSource('box8',true); 
dragDropObj.addSource('box9',true); 
dragDropObj.addSource('box10',true);  
dragDropObj.addSource('box11',true);  
dragDropObj.addSource('box12',true);  

내가 지금까지 있기 때문에이 작업을 수행해야합니다 : 다음 페이지 1의 샘플 코드입니다. 내가 만나는 문제는 프로그램이 시작될 때마다 경고가 나타납니다. "ID가 5 인 ID5 원본 요소가 없습니다"

이 경고와 함께 프로그램이 여전히 정상적으로 작동하지만 여전히 경고를 제거하려고합니다.

내 질문은 여기입니다 : 어떻게 이러한 경고가 표시되지 않게 할 수 있습니까? HTML에서 오류 캐칭 방법이 있습니까?

+0

페이지에 경고가 표시되는 위치를 알 수 있습니까? –

+0

경고가 IDE에 있습니까? – sgowd

+0

http://www.dhtmlgoodies.com/index.html?whichScript=drag-drop-custom에서 dragdrop js를 사용하고있는 것으로 의심됩니다. Javascript에는 try/catch가 있지만 더 좋은 해결책은 처음부터 오류를 일으키지 않는 것입니다. –

답변

0
if (document.getElementById('box1')){ 
    dragDropObj.addSource('box1',true); 
    dragDropObj.addSource('box2',true); 
    dragDropObj.addSource('box3',true); 
    dragDropObj.addSource('box4',true); 
} 
if (document.getElementById('box5')){ 
    dragDropObj.addSource('box5',true); 
    dragDropObj.addSource('box6',true); 
    dragDropObj.addSource('box7',true); 
    dragDropObj.addSource('box8',true); 
} 
if (document.getElementById('box9')){ 
    dragDropObj.addSource('box9',true); 
    dragDropObj.addSource('box10',true); 
    dragDropObj.addSource('box11',true); 
    dragDropObj.addSource('box12',true); 
} 

편집 :

더 나은 솔루션 :

groupFirstMember = 1; 
if (document.getElementById('box5')){ 
    groupFirstMember = 5; 
} 
else if (document.getElementById('box9')){ 
    groupFirstMember = 9; 
} 

for(i=0;i<4;i++){ 
    dragDropObj.addSource("box"+str(groupFirstMember+i),true); 
} 
+0

죄송하지만 정확한 코드를 작성하고있었습니다. 게다가,'if' 대신에'elseif'를 사용할 수 있습니다. –

+0

그것은 작동합니다. @vdbuilder에게 감사드립니다. – user1221330

+0

@ user1221330 아무 문제 없어요, 우리가 여기있는 이유입니다.) – vdbuilder

0

를 추가하기 전에 요소의 존재를 확인합니다.

if (typeof document.getElementById('box5') !== 'undefined'){ 
    // continue 
} 
+0

'if (document.getElementById ('box5'))'가 무엇인가 할 수 있습니다. –

+0

@RakeshJuyal, 아니요 null 및 undefined에 대해 유효성을 검사합니다. – Starx

+0

@starx 여러분은 typeof를 사용하지 않으면 null과 undefined에 대해 유효성을 검사한다는 사실이 틀림 없습니다. 그러나이 제한된 상황에서는 중요하지 않습니다. – vdbuilder

0

이 시도 :이 페이지와 실행의 모든 ​​'dragableBox'을 사로 잡고 'dragDropObj.addSource (..., TRUE);' jQuery를 사용하지 않고 id = box [x]를 사용하는 경우 다음을 수행 할 수 있습니다.

boxes = document.getElementsByClassName('dragableBox'); 
for (i=0; i < boxes.length; ++i) { 
    var id = boxes[i].id; 
    if(id.substring(0,3)==='box') 
    dragDropObj.addSource(id,true); 
} 
관련 문제