2015-04-08 3 views
1

Вот мой HTML и JS:Не удается вызвать функцию с JS

function calculateFun() 
 
{ 
 
\t var a = document.getElementById('a').value; 
 
\t var b = document.getElementById('b').value; 
 
\t var c = document.getElementById('c').value; 
 
\t var d = document.getElementById('d').value; 
 
\t var e = document.getElementById('e').value; 
 
\t 
 
\t var f = a*b; 
 
\t document.getElementById('f').value = f; 
 
\t var g = (f + (f*(d/100))).toFixed(); 
 
\t document.getElementById('g').value = g; 
 
\t var h = ((1 -((a*c)/e))*100).toFixed(); 
 
\t document.getElementById('h').value = h; 
 
\t 
 
}
<input type="number" id="a" onkeyup="calculateFun();" /> 
 
<input type="number" id="b" onkeyup="calculateFun();" /> 
 
<input type="number" id="c" value="100" /> 
 
<input type="number" id="d" value="50" /> 
 
<input type="number" id="e" onkeyup="calculateFun();" /> 
 
<br><br><p>******</p><br><br> 
 
<input type="number" id="f" /> 
 
<input type="number" id="g" /> 
 
<input type="number" id="h" />

Я попробовал этот код в JSFIDDLE: https://jsfiddle.net/1ex3b1sa/

, но он не работает. также на моем сайте функция не вызывается. Странно, потому что я могу ссылаться на другие функции, которые я сделал, почти так же.

я попытался изменить к OnClick, OnKeyPress или OnKeyDown, но не может видеть никаких результатов ..

какие-либо идеи? возможно, у меня есть опечатка? или, может быть, проблема с хромом?

+0

Поскольку ваша скрипка настроена неправильно! Код находится в событии onload. https: // jsfiddle.net/zvrywbLr/ – epascarello

+0

Посмотрите немного сложнее @mattytommo – epascarello

+2

В JSFiddle вам нужно установить свой перенос JavaScript в *** «Нет обертки - в' '" ***, иначе вы получите «Неотдача ReferenceError: calculateFun не определена ". –

ответ

4

В JSFiddle, вам необходимо установить ваш JavaScript завернуть в «Нет обертки - в <head>» или иначе вы получите «неперехваченный ReferenceError: calculateFun не определен» ошибки.

enter image description here

Убедитесь, что функция здесь:

<html> 
    <head> 
     <script type="text/javascript"> 
      function calculateFun() { 
       // ... 

Вы можете фактически сохранить определение функции в onLoad оберткой и изменения:

function calculateFun() { 

К этому :

window.calculateFun = function() { 

И он будет работать, потому что вы добавляете свою функцию как статический метод в Window браузера.

+0

Большое спасибо! – user3478552

1

С левой стороны jsfiddle.net находится поле с «Frameworks & Расширения».

Во втором поле выбора необходимо выбрать:

No wrap - in <body>

или

No wrap - in <head>

Тогда он будет работать. Если вы этого не сделаете, функция не будет отклонена, и она будет работать только один раз (в событии OnLoad).

-2

, пожалуйста, изучите jquery, это не так сложно и поможет вам!

вашей скрипки в функционировании JQuery: https://jsfiddle.net/1ex3b1sa/3/

ввода-поля есть класс = '' известково и ЯШИ:

$('.calc').keyup(function(){ 

var a = $('#a').val(); 
var b = $('#b').val(); 
var c = $('#c').val(); 
var d = $('#d').val(); 
var e = $('#e').val(); 

var f = a * b; 
$('#f').val(f); 

var g = (f + (f*(d/100))).toFixed(); 
$('#g').val(g); 

var h = ((1 -((a*c)/e))*100).toFixed(); 
$('#h').val(h); 

}); 
+0

Это вводит ненужные накладные расходы в веб-сайте/приложении, что может сильно повлиять на производительность. Обычно вы должны просто использовать то, что вам нужно, поэтому, если он имеет дело с простыми вещами, где использование внешней библиотеки не будет экономить достаточное количество кодировок или приносить новые и полезные функции, простой путь. Кстати, мне кажется, что он только начинает с JS, поэтому практика и опыт - это то, что ему нужно. – Arqu

Смежные вопросы