2013-06-17 3 views
0

Как говорится в заголовке, я пытаюсь добавить некоторый текст в текстовое поле в html, но в результате всегда есть какой-то странный текст с участием NaN, появляющийся в текстовом поле ... Вот мой код :странный текст NaN продолжает появляться в textarea

<!DOCTYPE html> 
    <html> 
    <head> 
    </head> 
    <body> 
    <?php 

    $_SESSION['currentlocation'] = "combat.php"; 
    ?> 
    <script type="text/javascript"> 
      if(document.getElementById("wrapper") == null) { 
       window.location = "../index.php";  
      } 
     </script> 

<textarea id="combatinfo" rows="4" cols="50"></textarea> 
<br /> 
<?php 
$_SESSION['currentlocation'] = "combat.php"; 

if($_SESSION['ambush'] && $_SESSION['flee']) { 

    for($i = 0; $i < sizeOf($_SESSION['enemies']); $i++) { 
     echo $_SESSION['enemies'][$i]->rank; 
     $scaling = 20 - $_SESSION['enemies'][$i] -> luck; 
     if($_SESSION['enemies'][$i]-> rank >= 20 && $_SESSION['enemies'][$i]-> rank < 40) { 

      $prob = rand(1, 100); 

      if($prob <= 100) {    
     //    if($prob <= 75 - $scaling * 3.8) { 
       if($_SESSION['comboAttack'] < 2) { 
        $_SESSION['comboAttack'] = 2; 
       } 

       $_SESSION['enemies'][$i]->comboAttack = 2; 
       ?>     
       <script type="text/javascript"> 
        $(document).ready(function() { 


         $('#combatinfo').append("HELLO WORLD!"); 

        }); 
       </script>  
     <?php   
      } 

     } 
     else if($_SESSION['enemies'][i]-> rank >= 40 && $_SESSION['enemies'][i]-> rank < 60) { 
      $prob = rand(1, 100); 

      if($prob <= 50 - $scaling * 3.8) { 
       if($_SESSION['comboAttack'] < 3) { 
        $_SESSION['comboAttack'] = 3; 
       } 

       $_SESSION['enemies'][i]->comboAttack = 3; 
       ?>      
       <script type="text/javascript"> 
        $(document).ready(function() { 

         var str1 = "Enemy "; 
         var str2 = "pulls off a 3-hit combo.\n"; 
         var str = str1.concat(str2); 

         $('#combatinfo').append("HELLO WORLD!"); 
        }); 
       </script> 
      <?php 
      } 
      else if($prob <= 75 - $scaling * 3.8) { 
       if($_SESSION['comboAttack'] < 2) { 
        $_SESSION['comboAttack'] = 2; 
       } 

       $_SESSION['enemies'][i]->comboAttack = 2; 
      ?> 
       <script type="text/javascript"> 
        $(document).ready(function() { 
         var str1 = "Enemy "; 
         var str2 = "pulls off a 2-hit combo.\n"; 
         var str = str1.concat(str2); 
         $('#combatinfo').append("HELLO WORLD!"); 
        }); 
       </script> 
    <?php       
      } 
     } 

     $_SESSION['enemies'][$i] ->attack($i); 
    } 
?> 
<button type="button">Defend</button> <button type="button">Flee</button> 
<form action="index.php" method="post"> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
<?php   
} 
else if(ambush && !flee) { 
?>   
<button type="button">Defend</button> <button type="button">Flee</button> 
<?php 
} 
if(!ambush && flee) { 
?>   
<button type="button">Attack</button> <button type="button">Flee</button> 
<?php 
} 
else if(!ambush && !flee) { 
?>   
<button type="button">Defend</button> <button type="button">Flee</button> 
<?php  
} 
?> 
<br /> 
<select id="selectClone">   
<?php 
if(sizeOf($_SESSION['playercharacter'] -> clones) == 0) { 
?> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var dropDownMenu = document.getElementById("selectClone"); 
      dropDownMenu.disabled = true; 
     }); 
    </script>    
    <option value="Player">Player</option> 
<?php   
} 
else if(sizeOf($_SESSION['playercharacter'] -> clones) == 1) { 
?> 
    <option value="Clone 1">Clone 1</option>    
<?php 
} 
?>    
</select> 

<div id="player" class="group">asdf</div> 
<div id="clone1" class="group">dsfdsfds</div>  

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.group').hide(); 
     $('#player').show(); 
     $('#selectClone').change(function() { 
      $('.group').hide(); 
      $('#'+$(this).val()).show(); 
     }) 
    }); 
</script> 

по какой-то причине в текстовом поле я получить текст «Враг #NaN» прилагаемый на текст я хочу. Почему это происходит, и как я могу остановить его?

+0

и вы думаете, что NaN странно? http://stackoverflow.com/questions/3215120/why-javascript-says-that-a-number-is-not-a-number – Twisted1919

+0

NaN обычно означает, что число, которое вы пытаетесь выразить, либо не является числом, либо это невозможно вычислить. С другой стороны, ваш код довольно трудно читать. В идеале ваша логика и презентация должны быть раздельными. Хотя это действительно работает, я считаю, что плохой практикой является использование PHP для вывода кода JavaScript. Файл html должен содержать только html, файл .js, только JavaScript, а файл PHP должен содержать только PHP. – FireCrakcer37

+0

@ FireCrakcer37 Мне сложно определить, действительно ли это нужно здесь или нет, но я столкнулся с несколькими примерами, где действительно необходимо выводить JavaScript с PHP. Например, запустите некоторые вычисления во время загрузки страницы (PHP) и манипулируйте ими на основе действий пользователя на загруженной странице (JS) - единственный способ - вывести их с помощью PHP. – DACrosby

ответ

1

NaN - специальное значение в Javascript (и на других языках). Это означает «Не номер».

Вы получите NaN при попытке делать числовые операции над значениями, которые не являются числовыми. Например, делая разрыв между двумя строками - например:

console.log("foo"/"bar"); 
> NaN 

или общий один, parseInt() на переменную, которая является нечисловая:

parseInt("foo"); 
> NaN 

Если затем попытаться отобразить значение, вы получите текст NaN.

NaN само по себе является особым значением, аналогичным null или undefined, но с его собственным значением на языке Javascript.

Со смесью кода PHP и JS в вашем вопросе очень трудно прочитать и найти проблему, но я уверен, что с приведенной выше информацией вам должно быть легче разобраться в себе.

Смежные вопросы