如何使某个javascript函数在页面加载时对其所有元素执行
How do I make a certain javascript function execute on page load for all its elements?
我有一个javascript函数定义如下(注意它不使用jquery):
function getCalculationFormsByType(selectObject, parentNode, countIndex)
{
var operationID = parseInt(selectObject.value, 10);
var divs = parentNode.getElementsByTagName("DIV");
// the rest of the function goes here, it isn't really important ...
}
该功能以以下方式执行(再次,无jquery):
<select name="operationChoose[]" onchange="getCalculationFormsByType(this, this.parentNode.parentNode, '1')" >
到目前为止一切正常。问题是,我需要在页面上所有select
元素的页面加载时执行此函数。像这样(我的想法使用jquery,但对于解决方案来说不是必需的):
$("document").ready(function(){
$("select[name='operationChoose[]']").each(function(){
getCalculationFormsByType(---I DO NOT KNOW WHAT TO PASS HERE---);
});
});
正如您所看到的,我的问题是我不知道该向jQuery中的函数传递什么。我不知道javascript中的这3个值是什么,也不知道如何在jQuery的each
循环中获得它们。
应该删除$("document").ready
中的引号。此外,$(..function here..)
是$(document).ready(...)
的简写。
这是正确的实现:
$(function() {
$("select[name='operationChoose[]']").each(function(i) { // <-- i-th element
// this points to the <select> element, HTMLSelectElement
getCalculationFormsByType(this, this.parentNode.parentNode, i);
});
});
您需要能够访问javascipt的parentNode
,所以只需将jQuery对象转移到经典的javascript对象即可。
此外,"文档"永远不会起作用。使用document
或简写
$(function(){
$("select[name='operationChoose[]']").each(function(){
getCalculationFormsByType(this, this.parentNode.parentNode, '1');
});
});
相关文章:
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 单击元素两次后执行操作
- toogleClass函数来切换元素类并在事件期间执行某些操作
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- Angular 指令似乎没有使用元素传入的选项执行
- 为什么在ASP.NET Ajax更新面板中执行任何操作后javascript元素都停止工作
- 使用html 5对元素执行自定义表单验证功能
- 执行 If 语句,仅当元素存在时
- 在两个元素的 onrender 事件之后执行函数
- 在将ajax内容应用到元素后执行js函数
- 对未知数量的元素执行Jquery循环
- touchstart和touchend事件引用相同的元素,而事件在不同的元素上执行
- Jquery执行基于元素'的父标记
- 这是关于Jquery/JS的,如果我改变元素's HTML-我可以对它执行其他Jquery/JS操作吗
- jQuery-等待此元素,然后执行1次
- 删除对象时执行元素指令动画的角度方式
- 正在执行元素atrribute中定义的回调
- Javascript在ajax请求后不执行元素