2011-01-29 7 views
1

이 함수를 사용할 때마다 this.refresh()가 오류 로그의 함수가 아니지만 정상적으로 작동합니다.함수가 작동하지만 보고서 this.refresh()가 함수가 아닙니다.

또한이 함수를 처음 클릭하면 this.value = undefined가됩니다. 이 양식과 다른 모든 양식에서 함수를 다시 누르면 값이 이전 값으로 잘 채워집니다.

내가 잘못 할 수 있습니까?

이 기능을보다 효율적으로 작성하려면 어떻게해야합니까?

여전히 this.value를 사용하여 배열 내의 값을 캡처하고 저장하는 방법을 아직 이해하지 못했습니다.

function askGender(x) { 
    response = "<select class=widgetstyle onClick=_setGender(this.value)><option value=Female>Female<option value=Male>Male</select>"; 
    characters[x].setGender(response); 
    if (this.gender != 0) { 
     response = this.gender; 
     this.gender = 0; 
     characters[x].setGender(response); 
    } 
} 

function _setGender(x) { 
    this.gender = x; 
    this.refresh(); 
} 
+0

'this.refresh()'는 사실 ** 함수가 아닙니다 **라는 것이 의심 스럽습니다. 당신은 그것이 무엇 이길 기대합니까? 또한,'var' 키워드로 "응답"을 선언하는 것을 잊어 버린 것 같습니다. – Pointy

+0

[jsfiddle.net] (http://jsfiddle.net)의 Javascript와 함께 HTML 부분을 게시하여 필사자가 문제를 이해할 수 있습니까? – Ravikiran

+0

x 란 무엇입니까? askGender() 및 _setGender()를 호출하는 사용자는 누구입니까? –

답변

0
응답에서

response = "<select class=widgetstyle onClick=_setGender(this.value)><option value=Female>Female<option value=Male>Male</select>";

보세요. 클릭 핸들러에서 성별을 설정합니다. this의 작동 방식에 대한 오해.

thisaskGender은 캐릭터 개체를 나타냅니다. onClick 핸들러 get이 this이라고 불리면 setGender 메소드의 DOM 객체를 참조합니다.

레코드의 경우 .refresh은 Character 객체의 메소드입니다.

전체 코드가 크기 때문에 철저한 디버깅이 필요합니다. 편집중인 오픈 소스 코드처럼 보이고 사용하도록 설계되지 않은 방식으로 사용하려고합니다.

+0

나는 본다. 그래서 나는 askGender 함수에서 값을 가져올 수있을 때 setGender 함수의 값을 가져오고 있습니다. 하나의 함수를 사용하여 옵션 값을 캡처하는 방법은 무엇입니까? 이 위치는 어디에서합니까? 값? 몇 가지 예제 코드가 있습니까? 이 기능은 양식의 굵은 텍스트를 클릭하면 작동하며 필드는 필드에 나타납니다. 사용자가 Male 또는 Female을 선택하고 필드 밖으로 클릭하면 필드가 사라지고 그 자리에 굵은 텍스트 "Female"이 복원됩니다. – ren1999

+0

@ ren1999'this.setGender'를 호출하면 잘 동작합니다. 'onClick'에서'_setGender'를 호출하면 끊어집니다. 가장 쉬운 해결책은 html을 문자열로 처리하지 않고 dom 메소드를 사용하지만 많은 리팩토링을하는 것입니다. 나는 당신을 위해 그 리팩토링을하지 않을 것입니다, 나는 두렵습니다. – Raynos

관련 문제