如何使用JavaScript在Anki中显示随机字段?

时间:2018-02-02 04:51:12

标签: javascript anki

首先,请参阅下面的一些相关但不太正确的代码:

<div id='0' style='display:none'><p>{{Field 1}}</p></div>
<div id='1' style='display:none'><p>{{Field 2}}</p></div>
<div id='2' style='display:none'><p>{{Field 3}}</p></div>

<script>
    document.getElementById(Math.floor(Math.random() * 3)).style.display = 'inline';
</script>

我有一个旧的Anki套牌,我总是填写3个字段,因此这段代码可以正常输出其中一个。我现在遇到的问题是我在一个牌组上工作,每张票据都会填写不同数量的字段。

基本上我试图弄清楚如何编写类似的JavaScript代码,除非它会从不同数量的东西中挑选一个随机的东西。如果一个字段叫做&#34;字段1&#34;在Anki中留空,我认为{{Field 1}}没有返回任何内容。也许代码可以跳过任何不返回任何内容并且在返回字符串的内容中显示一个随机字符(而不是选择一个随机字段,如果选择了其中一个空字段则不输出任何内容)?

提前致谢!

1 个答案:

答案 0 :(得分:0)

<!--- {{#field}}{{/field}} makes sure anki template engine doesn't render empty field into HTML --->
{{#Field 1}}<div class="field" style="display:none"><p>{{Field 1}}</p></div>{{/Field 1}}
{{#Field 2}}<div class="field" style="display:none"><p>{{Field 2}}</p></div>{{/Field 2}}
{{#Field 3}}<div class="field" style="display:none"><p>{{Field 3}}</p></div>{{/Field 3}}

<script>
  var fields = document.querySelectorAll('.field');
  var random = Math.floor(Math.random() * data.length);

  if(fields.length > 0) {
    fields[random].style.display = 'inline';
  }
</script>