В настоящее время я пишу JS code
для вычисления количества полных входов. Проблема в том, что для моего фактического проекта я не могу напрямую изменить HTML, поскольку он создан из программы сценариев. Однако я могу манипулировать им с помощью JS
.Динамически устанавливаемый атрибут onKeyUp с Javascript
До сих пор у меня есть div для добавления, который может отображать сумму входов. Но это работает, только если входы имеют атрибут onKeyUp()
. Это не относится к сгенерированной HTML, поэтому мне нужно написать JS script
, который добавляет его в этом то, что я сделал до сих пор:.
<html>
<head>
<script>
//try to set an onKeyUp attribute to the elements.
var number1 = document.getElementById("_Q0_Q0_Q0");
number1.onkeyup = function(){ return summer()};
var number2 = document.getElementById("_Q0_Q0_Q1");
number2.onkeyup = function(){ return summer()};
var number3 = document.getElementById("_Q0_Q0_Q2");
number3.onkeyup = function(){ return summer()};
function summer() {
var count = 0; //start with nothing
var num1 = (parseFloat(document.getElementById("_Q0_Q0_Q0").value)) || 0; //if there aren't any numbers, add nothing
var num2 = (parseFloat(document.getElementById("_Q0_Q0_Q1").value)) || 0;
var num3 = (parseFloat(document.getElementById("_Q0_Q0_Q2").value)) || 0;
count = num1+num2+num3; //sum them up
if (!document.getElementById("output")) { //check to see if there is a div with the output already, if not create one.
var newDiv = document.createElement('div');
newDiv.setAttribute('id', 'output');
var gutterDiv = document.getElementById("right_gutter")
gutterDiv.appendChild(newDiv);
};
document.getElementById("output").innerHTML = "Your running total = "+count
}; //show output
</script>
</head>
<body>
<input type="text" id="_Q0_Q0_Q0" name="number" />
<input type="text" id="_Q0_Q0_Q1" name="number" />
<input type="text" id="_Q0_Q0_Q2" name="number" />
<div id='right_gutter'>
<button type="button" onclick="summer()">Clicking here adds your input to the "count" variable</button> //two purposes of this. 1) Acts as a placeholder for where the output should end up. 2) Shows that the summing function works.
</div>
<br>
</body>
</html>
обработчики событий чувствительны к регистру, поэтому он должен быть 'onkeyup'. – kamituel
HTML нечувствителен к регистру, поэтому вы можете увидеть: ' ', но это не работает в JavaScript. – Halcyon
Изменен для onkeyup, но он все еще не работает – Scironic