简体   繁体   English

jQuery 选择器值返回未定义

[英]jQuery selector value returns undefined

I'm getting undefined of my variable 'base' which is basic $('slider').value.我的变量“base” undefined ,它是基本的 $('slider').value。 I have added a console.log(base) to test what is returned, but the value is undefined.我添加了一个 console.log(base) 来测试返回的内容,但该值未定义。

Here is my html:这是我的 html:

 jQuery(document).ready(function($) { let precentage = 17.5; let commision = 0.2746; function cost() { let base = $('#slider').value; let precentAmout = base * (precentage / 365 * 30); let commisionAmout = base * commision; let totalCost = commisionAmout + precentAmout; let totalSum = base + commisionAmout + precentAmout; console.log(base); $('#cost').text(totalCost); $('#sum').text(totalSum); } $('#slider').on('change', function() { $('#amout').text(this.value); cost(); }); })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="calc"> <div class="range-title"> <h2 class="range-label">Ile chcesz pożyczyć?</h2> <div class="display-wrap"> <span id="amout">500</span><span class="currency"> zł</span> </div> </div> <div class="range-wrap"> <button class="buttons-change-value">-</button> <input id="slider" class="range-input" type="range" min="500" max="1500" step="50" value="500"> <button class="buttons-change-value">+</button> </div> <div class="summary-container"> <div class="summary-box"> <h3>Koszt:<br> <span id="cost">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>Do zwrotu:<br> <span id="sum">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>RRSO:<br> <span id="rrso">200</span><span class="percentage"> %</span></h3> </div> </div> </div>

Do You have an idea why this is happening?您知道为什么会这样吗?

In JQuery, .val() function is available to get value of textbox.在 JQuery 中, .val() function 可用于获取文本框的值。

 let base = $('#slider').val()

 jQuery(document).ready(function($) { let precentage = 17.5; let commision = 0.2746; function cost() { let base = $('#slider').val(); let precentAmout = base * (precentage / 365 * 30); let commisionAmout = base * commision; let totalCost = commisionAmout + precentAmout; let totalSum = base + commisionAmout + precentAmout; console.log(base); $('#cost').text(totalCost); $('#sum').text(totalSum); } $('#slider').on('change', function() { $('#amout').text(this.value); cost(); }); })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="calc"> <div class="range-title"> <h2 class="range-label">Ile chcesz pożyczyć?</h2> <div class="display-wrap"> <span id="amout">500</span><span class="currency"> zł</span> </div> </div> <div class="range-wrap"> <button class="buttons-change-value">-</button> <input id="slider" class="range-input" type="range" min="500" max="1500" step="50" value="500"> <button class="buttons-change-value">+</button> </div> <div class="summary-container"> <div class="summary-box"> <h3>Koszt:<br> <span id="cost">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>Do zwrotu:<br> <span id="sum">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>RRSO:<br> <span id="rrso">200</span><span class="percentage"> %</span></h3> </div> </div> </div>

jQuery objects don't have a value property, they have a val() method. jQuery 对象没有value属性,它们有val()方法。

You can always pass the base variable value as a parameter to the cost function like this cost(this.value) .您始终可以像这样将基本变量值作为参数传递给成本 function cost(this.value) That would make more sense since you are already fetching the slider value once via onChange no need to do it again inside the cost function.这将更有意义,因为您已经通过 onChange 获取了一次 slider 值,无需在成本 function 内再次执行此操作。

Please take a look at the working snippet below.请查看下面的工作片段。

 jQuery(document).ready(function ($) { let precentage = 17.5; let commision = 0.2746; function cost(sliderValue) { let base = sliderValue; let precentAmout = base * (precentage / 365 * 30); let commisionAmout = base * commision; let totalCost = commisionAmout + precentAmout; let totalSum = base + commisionAmout + precentAmout; console.log(base); $('#cost').text(totalCost); $('#sum').text(totalSum); } $('#slider').on('change', function () { $('#amout').text(this.value); cost(this.value); });})
 <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <?DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div class="calc"> <div class="range-title"> <h2 class="range-label">Ile chcesz pożyczyć:</h2> <script src="https.//code.jquery.com/jquery-3.1.0:js"></script> <div class="display-wrap"> <span id="amout">500</span><span class="currency"> zł</span> </div> </div> <div class="range-wrap"> <button class="buttons-change-value">-</button> <input id="slider" class="range-input" type="range" min="500" max="1500" step="50" value="500"> <button class="buttons-change-value">+</button> </div> <div class="summary-container"> <div class="summary-box"> <h3>Koszt:<br> <span id="cost">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>Do zwrotu:<br> <span id="sum">200</span><span class="currency"> zł</span></h3> </div> <div class="summary-box"> <h3>RRSO:<br> <span id="rrso">200</span><span class="percentage"> %</span></h3> </div> </div> </div> </body> </html>

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

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