2016-07-24 4 views
0

나는 아주 기본적인 질문을하고 싶다. 함수에서 문자열 값을 따옴표없이 매개 변수로 보내는 방법을 찾아야합니다. 와 같은. 내 html 파일과 같을 것이다 : -자바 스크립트에서 인용 부호가있는 문자열을 매개 변수로 전달하는 방법

<p id='demo'> 
</p> 

및 JS 코드는 다음과 같습니다 -

function Random(data){ 
    document.getElementById("demo").data = "Paragraph changed!"; 
} 

Random(textContent); 

하지만 그냥 작동하지 않습니다! 다른 기술을 사용하여 작업을 완료 할 수 있습니까? 아니면 기본적으로 불가능합니까?

+1

"작동하지 않습니까?"라고 말하면 무엇을 의미합니까? 무슨 일이 생길 거라고 예상했는데, 실제로 무슨 일이 일어 났습니까? – smarx

+0

'document.getElementById ("demo"). innerHTML = "단락이 변경되었습니다!"; ' – demo

+0

제 질문은 일반적으로 문자열 변수를 사용하여 객체의 속성에 액세스하는 방법을 알고 싶었습니다. 얘들이 나를 아래로 답했다. .. 그래서 건배! – Drazxier

답변

0

"따옴표로 묶이지 않은 JS 프로그램 텍스트는 string이 아니며 expression입니다.

코드가 몇 가지 이유로 인해 제대로 작동하지 않습니다. 몇 가지 이유가 있습니다. 먼저 전달 된 data 매개 변수를 사용하여 작업하지 않습니다. .datagetElementById으로 검색 한 DOM 요소의 속성입니다. data은 액세스중인 속성의 문자 그대로의 이름이며 data 매개 변수의 값에 대한 참조가 아닙니다. 당신이 data 변수로 전달 된 이름을 가진 속성에 액세스하기 위해 당신은 그것을 액세스 할 수 bracket notation instead of dot notation를 사용해야합니다 : 당신은 내가 Random에서 random에 함수 이름을 변경 알 수 있습니다

function random(data) { 
    document.getElementById("demo")[data] = "Paragraph changed!"; 
} 

random("textContent"); 

. constructor functions의 경우 convention in JS to only use capitalized names이기 때문입니다.

따옴표없이 "문자열"을 사용하려는 이유 때문에 작동하지 않는 다른 이유가 있습니다. 자바 스크립트 엔진이 random(textContent);을 볼 때, 이는 random이라는 변수를 textContent이라는 변수의 값을 첫 번째 매개 변수로 전달함으로써 의미가 있다고 해석합니다. textContent이라는 변수를 정의하지 않았으므로 전달 된 값은 undefined입니다. 인용하면 문자열 리터럴로 바뀌므로 의도 한 문자열을 전달합니다.

+0

나는 왜 이것이 (그리고 다른 답) 다운 투표를했는지에 대해 혼란 스럽다. 어느 쪽인가에 문제가 있다면, 무엇을 알고있는 것이 좋을 것입니다. –

+0

정말 고마워요! 그게 내가 기대했던 것입니다 .. 응답 해 주셔서 대단히 감사합니다! 실제로 스택 오버플로에서 초보자입니다. – Drazxier

+0

도움이되었으므로 기꺼이 :-) 대답이 도움이된다면 (http://stackoverflow.com/help/someone-answers) upvote (일반적으로 [평판 포인트가 15 개 필요합니다] (http : // stackoverflow.com/help/privileges/vote-up)을 upvote로 보내십시오. 여기에 계속 참여한다면 얻을 수있는 것이 아닙니다. 나는 당신이 15의 rep 또는 아닙니다없이 당신의 자신의 질문에 응답을 upvote 수 있는지 확실하지 않다). 가장 유용한 답을 [수락] (http://stackoverflow.com/help/accepted-answer)로 표시해야합니다. –

1

코드는 정확하지만 당신은 문자열 변수를 사용하여 객체의 속성에 액세스 할 경우는 다음과 같이 그것을 수행해야합니다 : 당신은 따옴표없이 문자열을 "통과 할 수

document.getElementById("demo")[data] = "Paragraph changed!" 
+1

와우, 나는 이것이 그가 묻고있는 것임을 알지 못했습니다 ... – Paul

+0

고마워요! 나는 속성에 접근하는 방법에 대해 기대하고 있었다. .. 그러나 많은 용어를 모르고 있었다.. 건배 동료! – Drazxier

관련 문제