我正在尝试使用动态表单创建应用程序。我想对这些表格进行屏幕计算,但我很挣扎。当它是静态网页时,我可以让JS工作,现在我试图让这个逻辑适用于动态页面。
我相信我所追求的是屏幕上的计算JS函数只能在创建表单后调用。但是,我可能只是不了解HTML / JS的基础 - 我会让你决定......
下拉菜单更改时的原始页面"表格"创建(基本上 - 在下拉更改,将Page2.php加载到div" ForecastForm",然后使用Page2.php中的输入框和div,第二个JS函数旨在提供屏幕上的计算) :
<div>Top</div>
<br></br>
<script>
function GetForm(str) {
if (str == "") {
document.getElementById("ForecastForm").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ForecastForm").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","Page2.php?text="+str,true);
xmlhttp.send();
}
}
</script>
<select id="SiteDD" onchange="GetForm(this.value)">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<div id="ForecastForm"><b></b></div>
<script type="text/javascript">
for(var x=1; x<3; x++){
let num = "num"+x;
let input = "input"+x;
let total = "total"+x;
let element = "element"+x;
let inputelement = "inputelement"+x;
let thesum = "thesum"+x;
element = document.getElementById(num),
inputelement = document.getElementById(input),
thesum = document.getElementById(total);
document.getElementById(input).onchange = function() {
thesum.innerHTML = parseInt(element.innerHTML) + parseInt(inputelement.value);
};
};
</script>
<br></br>
<div>Bottom</div>
和&#34; Form&#34;加载:
<div id="num1">11</div>
<input type=number value=2 id="input1">
<div id="total1">0</div>
<br>
<br>
<div id="num2">11</div>
<input type=number value=2 id="input2">
<div id="total2">0</div>
非常感谢任何帮助或建议。谢谢。
答案 0 :(得分:0)
您正在尝试在加载动态内容之前绑定事件处理程序,因此在执行{{1}期间不会找到def count_e(input)
input.to_s.count("e")
end
def check_for_e(input)
count = count_e(input)
count > 0 ? count.to_s : "There's no \"e\"."
end
check_for_e("Covfefe") # => "2"
check_for_e("Bnjamin") # => "There's no \"e\"."
check_for_e(nil) # => "There's no \"e\"."
check_for_e("") # => "There's no \"e\"."
,num1
和num2
元素}循环(其他元素也是如此)。
相反,使用事件委派原则:num3
事件会冒出来,所以虽然触发for
元素尚未出现,但您已经可以收听change
事件了在文件上。稍后将input
添加到文档中并生成change
事件时,事件处理程序将捕获该事件,因为它会在DOM层次结构中冒泡。
您可以使用这些代码来代替input
循环:
change
一旦注入了动态内容,您也可以调用 calculate 函数:
for