【问题标题】:document.getElementsById("").innerHTML does not change the p tagdocument.getElementById("").innerHTML 不改变 p 标签
【发布时间】:2017-04-08 00:51:31
【问题描述】:

HTML

{% load static %}

 <link rel="stylesheet" type="text/css" href="{% static 'lessons/style.css' %}" />
<script>
function openNav() {
    document.getElementById("mySidenav").style.width = "20%";
    document.getElementById("main").style.marginLeft = "20%";
}

function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
    document.getElementById("main").style.marginLeft= "20%";
}
</script>


<div id="mySidenav" class="sidenav">
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="{% url 'home' %}" class="active">Home</a>

<a href = "{% url 'lessons:index' %}"class="active">Lessons</a>

<a href="{% url 'resources' %}"class="active">Resources</a>

</div>

<div id="main">
  <span style="font-size:30px;cursor:crosshair;display:inline-block" onclick="openNav()">&#9776;</span>

<h1>Exercise</h1>
<form id = "exercise" action= " ">
{% for question in lesson.question_set.all %}
{% autoescape off %}{{ question.question_text }} {% endautoescape %}<BR>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
{% for choice in question.choice_set.all %}
  {% if choice.answer %}
<input type="radio" name="question{{question.pk}}" value=1 />{% autoescape off %}{{ choice.choice_text }}{% endautoescape %}<BR>
  {% else %}
<input type="radio" name="question{{question.pk}}" value=0 />{% autoescape off %}{{ choice.choice_text }}{% endautoescape %}<BR>
  {% endif %}
<!--<label for="{{question.pk}}choice{{ forloop.counter }}"></label><br />-->

{% endfor %}
<BR>
{% endfor %}<BR><BR>
<input type="submit" value="Submit"><BR><BR>
</form>
</div>

<center><p id="grade">Your grade is: </p></center>

<button class="accordion"></button>
<div class="panel">
  {% for question in lesson.question_set.all %}
  {% autoescape off %}{{question.answer}} {% endautoescape %}
  {% endfor %}
<BR><BR>
  <p align=center><a href="/../lessons/{{lesson.lesson_id}}" class="backbutton"><span><font-size=14px>Return to Lesson</font></span></a>
    <a href="/../lessons/quiz/{{lesson.lesson_id}}" class="button"><span><font-size=14px>Quiz {{lesson.lesson_id}}</font></span></a><BR><BR>
</div>

<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>

Javascript 函数

  <script type='text/javascript'>

//start function
    <script>
  document.getElementById("exercise").onsubmit = function() {
  var result=0;
  { % for question in lesson.question_set.all % }
  result += parseInt(document.querySelector('input[name = "question{{question.pk}}"]:checked').value);
  { % endfor % }
  document.getElementById("grade").innerHTML = result;
  return false; // required to not refresh the page; just leave this here
  } //this ends the submit function
</script>
//end function






  var acc = document.getElementsByClassName("accordion");
  var i;

  for (i = 0; i < acc.length; i++) {
    acc[i].onclick = function() {
      this.classList.toggle("active");
      var panel = this.nextElementSibling;
      if (panel.style.maxHeight){
        panel.style.maxHeight = null;
      } else {
        panel.style.maxHeight = panel.scrollHeight + "px";
      }
    }
  }
  </script>

所以我正在使用 Django 创建一个网站,但我无法弄清楚为什么“document.getElementById("grade").innerHTML = result;”不会改变“你的成绩是:

”我有将 p 标签移动到整个页面,但仍然无法获取 innerHTML 来更改标签中的内容。我也将结果更改为不同的值,但它仍然没有更改 p 标签。我还将所有 javascript 函数也放在同一个脚本中。我希望页面提交测验并显示结果。我究竟做错了什么?稍后,我想显示哪些问题不正确,哪些是正确答案。 我会很感激帮助。谢谢!

这是更正后的脚本:

<script>
document.getElementById("submit").onclick = function() {
var result=0;
var count=0;
{% for question in lesson.question_set.all %}
result += parseInt(document.querySelector('input[name = "question{{question.pk}}"]:checked').value);
count++;
{% endfor %}
document.getElementById("grade").innerHTML = "You got a "+result+"/"+count+". If you would like to retake the quiz please resubmit!";
return false; // required to not refresh the page; just leave this here
} //this ends the submit function
</script>

【问题讨论】:

    标签: javascript html css django for-loop


    【解决方案1】:

    这是getElementById 不是getElementsById

    document.getElementById("grade").innerHTML = result;

    【讨论】:

    • @nvurdien 它应该可以工作,学习查看开发人员的控制台并找出任何错误。如果无法修复,请更新您的帖子。
    • 很抱歉因为黑客松而耽搁了。以下是图片:imgur.com/a/vmtNz
    • @nvurdien 变量错误,您使用的是result,但在innerHTML 上,您传递的是未定义的results 变量
    • 我改了。每当我尝试提交答案时,它都会刷新页面。我尝试使用 AJAX,但我不确定如何做到这一点,并且它也会以这种方式刷新页面。我更新了上面的代码
    • @nvurdien 根据您的代码,您不是通过 ajax 执行此操作,而是在提交时执行此操作,这绝对会刷新您的页面。 Ajax更像是防止提交行为,拉取元素值,向服务器生成请求,处理返回的数据
    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 2014-11-07
    • 2012-10-07
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多