2014-01-08 2 views
0

this.form을 호출하는 함수를 다루는 데 문제가 있습니다. 여기 innerHTML에서 this.form 접근하기

내 소스 코드의 일부입니다 : 여기

searchResult.innerHTML += "<td><div class=\"searchcard\" draggable=\"true\" ondragstart=\"isexc=0; clickselect(" 
searchResult.innerHTML += i 
searchResult.innerHTML += "); setformparam(this.form); onDragStart(event)\" 

내가 innerHTML 스크립트 내에서 건설 div 상자를 끌어 시작할 때 setformparam(this.form)을 수행하기 위해 시도했지만 작동하지 않습니다.

기타 기능은 isexc=0, clickselect(i)과 같이 잘 작동합니다.

this.form 내 JavaScript 내에서 액세스하는 방법을 가르쳐주십시오. 감사.

+0

'setformparam()'과'clickselect()'는 어디에서 유래 되었습니까? 나는 전에 그걸 보지 못했습니다. – zero298

+0

@ zero298'setformparam()'과'clickselect()'는 같은 소스 코드로 같은 .js 파일에 정의 된 함수입니다. 'setformparam (f)'는 HTML 파일에서 form을 호출하고 .js 파일에 선언 된 전역 변수에 특정 정보를 저장합니다. – fiverules

+0

@Teemu'searchResult'는 html 파일에있는 폼에 포함 된'div'의 이름입니다. '

'안에 '
'이 있습니다. – fiverules

답변

-2

$(this).children('form') 및 요소를 만드는 끔찍한 방법입니다하지 'this'

+0

그것은 jQuery와 관련이없는 것으로 보입니다. – Ryan

1

을 시도합니다. DOM을 사용하십시오 :

var cell = document.createElement("td"); 
var searchCard = document.createElement("div"); 
searchCard.className = "searchcard"; 
searchCard.draggable = true; 

(function(i) { 
    searchCard.addEventListener("dragstart", function(e) { 
     isexc = 0; 
     clickselect(i); 
     setformparam(someForm); 
     onDragStart(e); 
    }, false); 
})(i); // I’m just assuming `i` here is a loop variable of some kind 
     // You should probably use Array.prototype.forEach 

cell.appendChild(searchCard); 
searchResult.appendChild(cell); 

그리고 이벤트 위임을 사용하고 전역 변수 사용을 중지하십시오. 잠재적으로 여기를 정리할 수있는 많은 것들이 있지만, 아마도 Code Review을 시도해야합니다.

+0

고맙습니다. 시도해 보겠습니다. 하지만 이번이 DOM을 처음 본 것입니다. 각 행의 기능에 대해 더 자세히 설명해 주시겠습니까? – fiverules

+0

@fiverules : HTML이 트리로 구문 분석됩니다. 'document.createElement'를 사용하면 해당 트리에 삽입 할 수있는 지정된 태그 이름을 가진 요소를 만듭니다. 'appendChild'는 실제 삽입을 수행합니다. 루프 클로저 (loop-in-loop) 문제를 해결하는 데 도움이되는 래퍼입니다 (https://stackoverflow.com/questions/750486/javascript-closure-inside- loops-simple-practical-example). 'addEventListener' 메쏘드 나 함수 리터럴 구문을 인식하지 못한다면, 나는 그것에 대한 좋은 최신 책을 찾으려고 노력할 것입니다,하지만 그것들은 MDN이 여기에서하는 것보다 잘 알고 설명하기가 어렵습니다. . – Ryan

+0

감사합니다. 'searchcard' 객체를 만드는 것이 더 좋은 방법이라는 것을 알았습니다. 하지만 어떻게 내부에서 메인 HTML 파일의'form'에 접근 할 수 있습니까? – fiverules

0

당신이 요구하는 것이 맞는지는 모르겠지만 DOM 객체로 양식 요소를 가져 오려면 요소에 id를 설정하고 getElementById으로 호출하면됩니다.

또는 으로 가져올 수 있습니다. document.getElementsByTagName ("form") [x] 여기서 x는 원하는 양식의 색인입니다.

+0

내가 원하는 것은'checked' 라디오 버튼의 값과'select'의'selectedIndex' 값을'form' 안에 넣는 것입니다. 어떻게해야합니까? – fiverules

+0

오, 알겠습니다. 양식의 각 요소에 ID를 부여하고 양식 자체를 호출하는 대신 document.getElementById를 호출하여 ID를 작성했습니다. 고맙습니다. – fiverules

관련 문제