2013-02-01 2 views
43

매개 변수를 전달하는 자바 스크립트 함수가 있습니다. 매개 변수는 내 웹 페이지의 요소 (숨겨진 필드)의 ID를 나타냅니다. 이 요소의 값을 변경하고 싶습니다.Javascript Id로 요소 가져 오기 및 값을 설정하십시오.

function myFunc(variable){ 
    var s= document.getElementById(variable); 
    s.value = 'New value' 
} 

이렇게하면 개체가 null이기 때문에 값을 설정할 수 없다는 오류가 발생합니다. 하지만 브라우저에서 생성 된 HTML 코드에서 볼 수 있기 때문에 객체가 null이 아니라는 것을 알고 있습니다. 은 어쨌든, 나는 두 매개 변수가 동일, 경고 메시지가 표시되면

function myFunc(variable){ 
    var x = variable; 
    var y = 'This-is-the-real-id' 
    alert(x + ', ' + y) 
    var s= document.getElementById(x); 
    s.value = 'New value' 
} 

을 디버깅하려면 다음 코드를했지만, 난 여전히 오류가 발생합니다. 하지만

var s= document.getElementById('This-is-the-real-id'); 
    s.value = 'New value' 

을 수행 할 때 모든 것을 내가있는 내가 값을 설정하고 요소는 숨겨진 필드가

이하십시오

EDIT를 해결할 수있는 방법 잘 작동하고 id는 같은 동적 DET입니다 페이지가로드됩니다. 나는 .ready 함수 $ (문서)이 추가 시도했지만 다음

function setText(id,newvalue) { 
    var s= document.getElementById(id); 
    s.innerHTML = newvalue; 

}  
window.onload=function() { 
    setText("This-is-the-real-id","Hello there"); 
} 

당신이 원하는 것을 할 것입니다

+2

함수를 호출하는 위치를 봅시다 (제공 한 코드로 판단 할 때 이름이 없음). –

+0

변수는 무엇입니까? 이름없는 함수를 어떻게 부릅니까? – mplungjan

+1

미안하지만 그건 typo – jpo

답변

43

은 페이지 렌더링 ... 당신이

+0

숨겨진 필드를 만든 다음 숨겨진 필드의 값을 설정하는 함수를 실행하는 버튼을 만듭니다. 그러나 ID는 동적으로 설정됩니다. $ (document) .ready 함수에서이 함수를 추가하려고 시도했지만 같은 문제가 발생합니다. – jpo

+0

@jpo id가 동적으로 설정되면 id가 설정된 후에도 myFunc가 호출되는지 확인해야합니다. id를 설정하는 함수에서 myFunc를 호출 할 수 있습니다. –

+0

내 코드는 다음과 같습니다. @Html.HiddenFor (m => m.myfield, new {id = "myId"}) . – jpo

11

<div id="This-is-the-real-id"></div> 

을 감안할 때 작동하지 않았다


주어진

<input id="This-is-the-real-id" type="text" value=""> 

다음

function setValue(id,newvalue) { 
    var s= document.getElementById(id); 
    s.value = newvalue; 

}  
window.onload=function() { 
    setValue("This-is-the-real-id","Hello there"); 
} 

MYFUNC (변수) 텍스트 영역 전에 실행하면

<html> 
<head> 
<script> 
function displayResult(element) 
{ 
document.getElementById(element).value = 'hi'; 
} 
</script> 
</head> 
<body> 

<textarea id="myTextarea" cols="20"> 
BYE 
</textarea> 
<br> 

<button type="button" onclick="displayResult('myTextarea')">Change</button> 

</body> 
</html> 
+0

정확히 내가 생각한 것. 하지만 내 ID와 동적으로 설정합니다. 그러나 나는 같은 생각을 사용했다. 그러나 함수가 호출 될 때, 문서는 지정된 id를 가진 요소를 찾을 수 없다. – jpo

+0

우리는 html과 이벤트 핸들러 (onclick 또는 무엇이든)를 볼 필요가있다. – mplungjan

1

그것이 작동 아래와 같이 시도하고 싶은 것을 할 것 null 예외 오류가 발생합니다.

<html> 
    <head> 
    <title>index</title> 
    <script type="text/javascript"> 
     function myFunc(variable){ 
      var s = document.getElementById(variable); 
      s.value = "new value"; 
     } 
     myFunc("id1"); 
    </script> 
    </head> 
    <body> 
     <textarea id="id1"></textarea> 
    </body> 
</html> 
//Error message: Cannot set property 'value' of null 

그래서, 당신의 텍스트 영역이 페이지에 존재 확인한 다음 MYFUNC 전화, 당신은 창로드 또는 $ (문서) .ready 기능을 사용할 수 있습니다. 도움이 되길 바랍니다.

+1

인라인 이벤트 핸들러는 나쁜 습관이다. – jbabey

4
<html> 
<head> 
<script> 
function updateTextarea(element) 
{ 
document.getElementById(element).innerText = document.getElementById("ment").value; 
} 
</script> 
</head> 
<body> 

<input type="text" value="Enter your text here." id = "ment" style = " border: 1px solid grey; margin-bottom: 4px;" 

onKeyUp="updateTextarea('myDiv')" /> 

<br> 

<textarea id="myDiv" ></textarea> 

</body> 
</html> 
0

나는이 문제가 당신이 자바 스크립트 기능을 호출하는 방법이라고 생각한다. 귀하의 코드는 다음과 같습니다 :

<input type="button" onclick="javascript: myFunc(myID)" value="button"/> 

myID는 따옴표로 묶어야합니다.

관련 문제