2012-04-07 6 views
4

Когда я вызываю свою функцию JavaScript B, консоль JavaScript в Firefox говорит, что функция A не определена, но в браузере Chrome она определена. И когда я вызываю функцию «А» в сегменте тела:Почему моя функция JavaScript «а» не определена?

<input type="button" onclick="A()" value=" ..A.. "> 

Firefox сказал, что функция B не определена. Зачем?

<html> 
    <head> 
     <script language="javascript" type="text/javascript"> 
      function B() { 
       alert(" hi B "); 
       document.write('<br><br><input type="button" onClick="A()" value=" ..A..">'); 
      }; 

      function A() { 
       alert(" hi A"); 
       document.write('<br><br><input type="button" onclick="B()" value=" ..b..">'); 
       if (window.WebCL == undefined) { 
        alert("Unfortunately your system does not support WebCL. "); 
        return false; 
       } 
      } 
     </script> 
    </head> 
    <body> 
     <input type="button" onclick="B()" value=" ..B.. "> 
    </body> 
</html> 
+0

[Fiddle] (http://jsfiddle.net/F8Dwk/) –

+0

@TomaszNurkiewicz для этой скрипки, как хром и FF дать мне предупреждение, никто не дал ошибку – Pheonix

+0

@ Pheonix: вы получили _both_ предупреждения «hi B» и «hi A»? На FF11 я получаю предупреждение «hi B», но консольная ошибка, когда я нажимаю кнопку A. –

ответ

4

Первая запись очищает содержимое документа, в результате чего функция А быть определено

+0

Возможно, это и есть причина. Но это не должно происходить, поскольку функция определена до того, как она будет стерта из '

3

Проблема заключается в том, что вы звоните document.write после загрузки страницы, которая эффективно уничтожает существующее содержание страницы, включая встроенный скрипт. Вместо этого вы должны использовать DOM manipulation methods.

1

Попробуйте это:

<html> 
<head> 
<script language="javascript" type="text/javascript"> 

var A = function() { 
    alert(" hi A"); 
    document.write('<br><br><input type="button" onclick="B()" value=" ..b..">'); 
    if (window.WebCL == undefined) { 
    alert("Unfortunately your system does not support WebCL. "); 
    return false; 
    } 
} 

function B(){ 
    alert(" hi B ");  
    document.body.innerHTML = ('<br><br><input type="button" onClick="new A()" value=" ..A..">'); 
} 

    </script> 
    </head> 

<body> 
    <input type="button" onclick="B()" value=" ..B.. "> 
</body> 

</html> 
+0

Я принял форму Ehsan, и я иду изучать методы DOM, спасибо – 4l3x