2014-01-22 2 views
0

Я пытаюсь написать в div с помощью javascript. Он требует ввода от пользователя, и я хочу, чтобы он записывался в div. Ввод представляет собой html-код для виджета twitter. Он возвращает undefined, и я не понимаю, почему.getElementById возвращает undefines

<script type="text/javascript" src="//platform.twitter.com/widgets.js"></script> 
     <div class="container"> 
     <!-- Example row of columns --> 
     <div class="row"> 
     <div class="col-md-4"> 
      <h2>Cheese</h2> 
      <p>A seriously awesome food</p> 
      <img data-src="holder.js/200x200" class="img-thumbnail" alt="200x200" style="width: 200px; height: 200px; position:relative; top:-10px;" src="Pictures/cheese.jpeg"/> 
      <p><a class="btn btn-default" href="cheese.html" role="button style-"position-top:10px;">Learn more »</a></p></div> 

     <div class="col-md-4"> 
      <h2>Reply</h2> 
      <p>Reply to a twitter tweet!</p> 
      <p><a class="btn btn-default" role="button" href="https://twitter.com/intent/tweet?">Reply</a></p> 
     </div> 
     <div class="col-md-4"> 
      <h2>Post</h2> 
      <button onclick="myFunction()">Enter Code</button> 
      **<script> 
      function myFunction(){ 
      var x; 
      var code=prompt("Please enter your html code."); 
      document.getElementById("test").innerHTML=x; 

      } 

      </script>** 
      <div id="test"> 

</div> 

      <p><a class="btn btn-default" href="http://getbootstrap.com/examples/jumbotron/#" role="button">View details »</a></p> 
     </div> 
     </div> 
+0

Вы установили '# test.innerHTML' в' undefined'. Там просто 'var x;'. Как исправить, зависит от того, что вы хотите показать на 'div'. – Teemu

+0

getElementById никогда не возвращает undefined. Если элемент не найден, он возвращает null, но в вашем случае он должен его найти. Пожалуйста, опишите вашу проблему лучше. –

ответ

2

Вы объявляете две переменные в функции: «х» и «код». Вы назначаете что-то одному, а затем используете другое.

 var x; 
     var code=prompt("Please enter your html code."); 
     document.getElementById("test").innerHTML=x; 

Таким образом, «x» никогда не определяется, а «код» никогда не используется.

+0

Спасибо, я не могу поверить, что я пропустил это. Я даже не знаю, почему у меня была переменная x. – Actionman

0

Пожалуйста, поместите свои скрипты под div (id is 'test') или внутри функции window.onload, чтобы ваш dom был готов для вставки данных.

function myFunction(){ 
    var x; 
    var code=prompt("Please enter your html code."); 
    document.getElementById("test").innerHTML=x; 
} 
+0

Вы даже взглянули на код OP? Не имеет значения, где функция, которую я определил, потому что она вызывается только когда DOM готова в любом случае. –

+1

Кроме того, если функция действительно была помещена в обработчик onload, она была бы локальной для этого обработчика, а обработчик события встроенной кнопки не смог бы найти эту функцию. (И тем, кто это подтвердил: вы, похоже, не прочитали код ...) –

+0

@ Феликс Клинг благодарит вас за все разъяснения –

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