2014-04-11 2 views
0

일부 코드를 상속 받았으며, 사장님이 너무 많이 작업 할 것이라고 생각하기 때문에 너무 많이 변경해서는 안됩니다. (이 사이트는 실제로 정말 끔찍합니다). 처음에는 괜찮 았지만 Uncaught TypeError: object is not a function 오류가 발생하는 두 번째 소리가 onclick 인 사운드를 재생하려고하는 javascript 함수가 있습니다. 여기 잡히지 않은 TypeError : 객체가 두 번째 호출에서 함수가 아닙니다.

은, 변수가 끔찍하게 불행하게도 이름을 지정하는 코드입니다

function FP_playSound(path) { 
    var b, d = document, e, es, i, se = "<EMBED SRC='" + path + "' HIDDEN=TRUE LOOP=FALSE AUTOSTART=TRUE>"; 
    if (d.body) 
     b = d.body; 
    if (d.getElementsByTagName) { 
     es = d.getElementsByTagName('embed'); 
     for (i = 0; i < es.length; i++) { 
      e = es(i); 
      if (e.src == path) { 
       if (e.removeNode) e.removeNode(); 
       break; 
      } 
     } if (b != null && b.insertAdjacentHTML) b.insertAdjacentHTML("beforeend", se); 
    } 
} 

여기에 통화 중 하나입니다

<img id="img1" alt="" onclick="FP_playSound(/*url*/'sound/nikon-shutter.wav'); menue01_click(); " onmouseout="FP_swapImgRestore()" onmouseover="FP_swapImg(1,1,/*id*/'img1',/*url*/'images/menue01_ro.png')" class="style2" src="images/menue01.png" /> 

하여 기능의 이름 및과 충돌이 없습니다 ID. 이게 내가 자바 스크립트에서 알아야 할게 뭔가? 기능이나 통화를 변경해야합니까? 그것은 NodeList의,

e = es(i); 

함수로 es를 호출하려고하지만, es는 함수가 아닙니다 :

답변

4

문제는이 라인입니다.

이 있어야한다 : 인덱스 i에 대한 목록에서 항목을 검색

e = es[i]; 

을 ....

처음으로 문제가되지는 않습니다. 왜냐하면 처음으로 목록이 비어서 결코 그 코드 줄에 도달하지 않기 때문입니다. 두 번째로, embed 요소를 처음으로 추가했기 때문에 목록이 비어 있지 않으며이 선에 도달하여 오류가 발생합니다 (이유가 있음).

+1

감사합니다. 나는 다른 누군가에게 비슷한 문제를 지적했다. (파이썬에서도) 나는 그것을 놓쳤다는 것을 매우 짜증나게했다. 가능한 빨리 답변을 수락하겠습니다. 건배! –

관련 문제