【问题标题】:JSON value++, cant change valueJSON值++,不能改变值
【发布时间】:2018-04-30 21:27:04
【问题描述】:

我创建 JSON 数据库,第一个问题正确显示,因为 val = 0,当我将 val 更改为 val=1 时,我得到第二个问题。所以一切正常,但是当我试图使用按钮时......你什么都没有......

HTML:

<!DOCTYPE html>
<html lang="pl-PL">
<head>
    <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script type="text/javascript" src="question.json"></script>
    <title>Quiz</title>

    <script>
$(function() {

$.getJSON("question.json", function(json) {
    val = 0;
    if($("#next").data('clicked')){
        val = val+1;
    }
    var x = json.Endokrynologia[val];
    document.getElementById("title").innerHTML = x.title;
    document.getElementById("id").innerHTML = x.id;
    document.getElementById("question").innerHTML = x.question;
    document.getElementById("ans1").innerHTML = x.answear01;
    document.getElementById("ans2").innerHTML = x.answear02;
    document.getElementById("ans3").innerHTML = x.answear03;
    document.getElementById("ans4").innerHTML = x.answear04;
    document.getElementById("ans5").innerHTML = x.answear05;
    document.getElementsByName("answear")[0].value = x.answear01;
    document.getElementsByName("answear")[1].value = x.answear02;
    document.getElementsByName("answear")[2].value = x.answear03;
    document.getElementsByName("answear")[3].value = x.answear04;
    document.getElementsByName("answear")[4].value = x.answear05;


});

 $("input[name=answear]:radio").change(function () {
        return ans = $("input[name=answear]:checked").val();
   });
$("#result").click(function(){
                     alert(ans);
                     });


});
</script>
</head>

<body>
<div id="demo">
    <h1 id="title"></h1>
    <p id="id"></p><p id="question"></p>
    <input type="radio" name="answear"><label id="ans1"></label></br>
    <input type="radio" name="answear"><label id="ans2"></label></br>
    <input type="radio" name="answear"><label id="ans3"></label></br>
    <input type="radio" name="answear"><label id="ans4"></label></br>
    <input type="radio" name="answear"><label id="ans5"></label></br>
</div>
<button id="result">button </button>
<button id="next">next</button>
</body>
</html>

也可以试试:

$("#next").click(function(i, val) { return val*1+1 });

becofe getJSON

and $("#next").click(function(i, val) {
var val =0 ;
var val*1+1;
   $.getJSON("question.json", function(json) {....}
});

这在单击按钮时有效,但是在加载文件时我没有输出...我错过了什么但是什么?

【问题讨论】:

  • 请显示html。成功处理程序中的 return 语句不执行任何操作,因为此函数不会返回到您的代码。
  • 完成,所有hmtl添加
  • @zze 我想你假设这个词应该是英文单词“answer”。你认为“Endokrynologia”的正确拼写是什么? XD
  • UPS。 xD 你复制并粘贴第一个错误。 :D ty :-)
  • 是的......我已经改变了......但没有任何改变:D

标签: jquery json


【解决方案1】:

您的next 按钮实际上并没有做任何事情。您希望它操纵一些值,然后相应地填充表单。更像是下面显示的内容。请注意,为了清楚起见,我已经删除了对 getJSON 的调用,因为它应该做的就是设置 json 的值:

var json;
var val;

function populate(x) {
  document.getElementById("title").innerHTML = "Data: "+x;
  // population of other stuff here, removed for clarity
}

$(function() {
  val = 0;
  //   code to populate the json variable from the external resource is not used, it's being replaced with a stub
  // $.getJSON("question.json", function(response) {
  //     json = response;
  //     populate(json.Endokrynologia[val]);
  // }
  //
  // ----- <stub> -----
  json = { Endokrynologia: [ "one", "two", "bar", "foo" ] };
  populate(json.Endokrynologia[val]);
  // ----- </stub> -----

  $("#next").on('click', function(event) {
      val = val + 1;
      populate(json.Endokrynologia[val]);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="demo">
  <h3 id="title"></h3>
    <p id="id"></p>
    <p id="question"></p>
    <input type="radio" name="answear"><label id="ans1"></label></br>
    <input type="radio" name="answear"><label id="ans2"></label></br>
    <!-- other elements removed for clarity -->
    </div>
    <button id="result">button </button>
    <button id="next">next</button>
  </body>
</html>

【讨论】:

  • 很酷,但我需要打电话.. 为清楚起见:D 我的数据库有 10 000 个位置:D 如果我将在主文件中创建 JSON...它将不可读...可能还有其他方式?!
  • 我有大约 20 个主题:其中 1 个是 ENDOKRYNOLOGIA,
  • 这是一个不同的问题 :) 但是您仍然应该只需要一个全局命名空间来保存您的数据。听起来您需要进行更精细的 getJSON 调用才能仅获取您当前工作的类别。祝你好运,我得走了
  • 干得好。一切正常:我必须正确阅读您的代码..需要更多时间:D
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多