2014-01-09 3 views
1

저는 javascript에 익숙하지 않고 변수 x를 생성하는 HTML 내에서 스크립트를 작성하려고 시도하고 테이블의 셀에 씁니다. 이것이 내가 생각해 낸 것이지만 작동하지 않습니다.Javascript 기능이 작동하지 않습니다 + var

<table border="1"> 
    <tr> 
     <td>Text</td> 
     <td id="xx"></td> 
     <td><button type="button" onclick="x()">Check</button></td> 
    </tr> 
</table> 

<script> 
    function x() { 
     var x = idec.device_read("D", 0901, 0, 0); 
    } 
    document.getElementById("xx").innerHTML = x; 
</script> 

버튼을 클릭하면 var x의 결과를 셀에서 볼 수 있다는 아이디어가 있습니다. 그것이 작동하지 않았다 그러나, 나는 그럼 난 이론적으로 적어도 다섯 추가됨해야하는

<p> 
    <script> 
     document.write(x + "<br>"); 
     document.write(y); 
    </script> 
</p> 

을 추가 우측 상단

에서 스크립트

var y = 5; 

에 다음과 같은 추가 테이블 후에 ... 안 그래? 더 오 등장하지 않기 때문에 ... 문제의

일부는 내가 제대로 그 내용을 확인할 방법을했습니다 없기 때문에 나는

var x = idec.device_read("D", 0901, 0, 0); 

일부 잘못을 가지고 있다고 할 수있다.

+3

입니다.그래서 함수 x()를 가지지 않고 var x = – CRABOLO

+0

변수 x가 함수 x의 범위 내에서 정의 되었기 때문에 문제의 원인이 아닐지라도 좋은 조언이됩니다. 이 경우에는 지혜보다 더 운이 좋습니다. – kander

+0

여기에 입력 할 때 x를 넣으면됩니다. 다른 이름을 가지고 있습니다 ... –

답변

1

함수를 테이블 셀에 작성하면 페이지로드시 즉시 실행됩니다. 그 시점에서 변수 x는 아직 선언되지 않았으므로 아무 것도하지 않습니다. 그런 다음 버튼을 클릭하면 변수 x가 채워지지만 아무 것도 수행되지 않습니다.

function x() { 
    var x = idec.device_read("D", 0901, 0, 0); 
    document.getElementById("xx").innerHTML = x; 
} 

나는 idec.device_read()가 수행하도록되어 모르는, 그래서 나는 그 문제의 일부인지 여부에 대해 언급 할 수 없다. 여전히 작은 값으로 고정 된 값으로 함수 호출을 대체하여 문제를 해결하는 것이 좋습니다. 테이블 셀에 쓰기 작업을 할 수 있다면 그 코드를 다시 추가하여 장치에서 값을 읽는 문제를 해결할 수 있습니다. 분할 및 정복 :

function x() { 
    var x = 'test'; 
    document.getElementById("xx").innerHTML = x; 
} 

으로는 AlienArrays에 의해 코멘트 지적 : 변수 같은 당신의 기능을 명명하는 것은 자바 스크립트에서 할 수있는 위험한 일이다

function writeDeviceValueToCell() { 
    var deviceValue = 'test'; 
    document.getElementById("xx").innerHTML = deviceValue; 
} 

클라이언트 - 관련된 질문을 게시 JS Fiddle에 코드를 추가하는 것을 고려해보십시오. 그렇게하면 도움을 주려는 사람들이 자신이하려는 일을보다 쉽게 ​​볼 수 있습니다. 나는 보여주기 위해이 문제에 대한 바이올린을 만들었습니다 http://jsfiddle.net/5gESD/

+0

idec에 지정한 "고정 값"을 어떻게 변경할 수 있습니까? –

+0

내가했던 것을 되돌리기 위해 idec.device_read() 호출을 내가 제안한 'test'값 위로 붙여 넣습니다. – kander

+0

그래서 세 번째 코드 집합을 사용하고 테스트 코드를 내 코드로 바꿉니 까? ''가 있든 없든? –

0

시도이

function setX() 
{ 
var x='10'; 
document.getElementById("xx").innerHTML=x; 
} 

<table border="1"> 
<tr> 
<td>Text</td> 
<td id="xx"></td> 
<td><button type="button" onclick="setX()">Check</button></td> 
</tr> 
</table> 

변수 x 당신이 innerHTMLx의 범위가 너무 function x

입니다 설정할 때 그래서 function x 내부의 범위가 먼저 함수 이름을 변경하고 함수 내에서 값을 설정하십시오. 여기

는 함수 이름이 실질적으로 변수이기 때문에 변수 이름과 함수 이름이 동일하지 않습니다, 먼저 샘플 빈 링크 http://jsbin.com/ANUBeXox/1/

+0

실제로 변수는 함수 내에서 선언되므로 동일한 범위 내에 있지 않습니다. – kander

+0

예, 맞습니다. –

관련 문제