简体   繁体   English

Javascript:获取Typeerror-元素为null

[英]Javascript: Get Typeerror - element is null

I have a BMI calculator in Wordpress, that get's the 我在Wordpress中有一个BMI计算器,

Typeerror: 类型错误:

result is null and health is null 结果为null,运行状况为null

The calculator works fine in fiddle https://jsfiddle.net/2au9y34x/2/ but don't on Wordpress. 计算器可以在小提琴https://jsfiddle.net/2au9y34x/2/中正常工作,但不能在Wordpress上使用。 I have placed the script in the footer, so that the HTML is read first, so that is not where the problem is. 我已将脚本放在页脚中,以便首先读取HTML,因此这不是问题所在。 Can anyone help solve this problem? 谁能解决这个问题?

Javascript is: Javascript是:

<script type='text/javascript'>
  var form = document.querySelector('form[name=bmi]');
  var onSubmit = function(event) {

    event.preventDefault();
    var healthMessage;

    var result = form.querySelector('.result');
    var health = form.querySelector('.health');

    var weight = parseInt(form.querySelector('input[name=weight]').value, 10);
    var height = parseInt(form.querySelector('input[name=height]').value, 10);

    var bmi = (weight / (height / 100 * height / 100)).toFixed(1);

    if (bmi < 18.5) {
      healthMessage = 'undervægtig';
    } else if (bmi > 18.5 && bmi < 25) {
      healthMessage = 'normal vægtig';
    } else if (bmi > 25) {
      healthMessage = 'overvægtig';
    }
    result.innerHTML = bmi;
    health.innerHTML = healthMessage;
  }
  form.addEventListener('submit', onSubmit, false);
</script>

HTML is: HTML是:

<form name="bmi">
  <h1>Mål dit BMI:</h1>
  <label>
    <input type="text" name="weight" id="weight" placeholder="Vægt (kg)">
    <input type="text" name="height" id="height" placeholder="Højde (cm)">
    <input type="submit" name="submit" id="submit" value="Udregn BMI">
    </label>
  <div class="calculation">
    <div>
      Dit BMI er: <span class="result"></span>
    </div>
    <div>
      Dette betyder at du er: <span class="health"></span>
    </div>
  </div>
</form>

Add the javascript after the closing tag of form 在表单的结束标记后添加javascript

OR you can try this 或者你可以尝试这个

window.onload = function() {
 var form = document.querySelector('form[name=bmi]');
 var onSubmit = function(event) {

event.preventDefault();
var healthMessage;

var result = form.querySelector('.result');
var health = form.querySelector('.health');

var weight = parseInt(form.querySelector('input[name=weight]').value, 10);
var height = parseInt(form.querySelector('input[name=height]').value, 10);

var bmi = (weight / (height / 100 * height / 100)).toFixed(1);

if (bmi < 18.5) {
  healthMessage = 'undervægtig';
} else if (bmi > 18.5 && bmi < 25) {
  healthMessage = 'normal vægtig';
} else if (bmi > 25) {
  healthMessage = 'overvægtig';
}
result.innerHTML = bmi;
health.innerHTML = healthMessage;
}
form.addEventListener('submit', onSubmit, false);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM