引用另一个包含'这'Javascript中的引用
Referencing another function containing a 'this' reference in Javascript
我的一位同事编写了各种Javsascript函数,这些函数显示依赖于各种输入的答案的某些HTML元素。这是其中一个函数的示例,它们都非常相似。
function addSponsership(sponser) {
if (sponser.value == "N") {
document.getElementById('nameofperson').style.display = "block";
document.getElementById('nameofpersonvalue').style.display = "block";
document.getElementById('address').style.display = "block";
document.getElementById('addressvalue').style.display = "block";
document.getElementById('postcode').style.display = "block";
document.getElementById('postcodevalue').style.display = "block";
document.getElementById('telephone').style.display = "block";
document.getElementById('telephonevalue').style.display = "block";
document.getElementById('fax').style.display = "block";
document.getElementById('faxvalue').style.display = "block";
document.getElementById('emailaddress').style.display = "block";
}
if (sponser.value == "NH") {
document.getElementById('nameofperson').style.display = "none";
document.getElementById('nameofpersonvalue').style.display = "none";
document.getElementById('address').style.display = "none";
document.getElementById('th1').style.display = "none";
document.getElementById('th8').style.display = "table-row";
}
if (sponser.value == "Y") {
document.getElementById('nameofperson').style.display = "none";
document.getElementById('nameofpersonvalue').style.display = "none";
document.getElementById('address').style.display = "none";
}
}
该函数是通过onclick事件从HTML中调用的,该事件如下所示:
<input type="radio" name="IPQ_FUND1" id="IPQ_FUND1" value="Y" checked="checked" onclick="addSponsership(this);"/>
现在,我想使用body元素上的onload事件来调用所有这些函数。然而,我不确定如何做到这一点。示例:
function callAllOtherFunctions()
{
addSponsership(sponser)
addSponsership2(sponser)
addSponsership3(sponser)
etc...
}
这样做的问题是,我找不到一种方法来引用其值需要检查的特定元素。理想情况下,我需要在不编辑同事编写的原始函数的情况下找到解决方案。
我试图通过创建另一个看起来像这样的函数来单独完成它:
function addSponsershipLoad(inputID){
sponser = document.getElementById(inputID);
addSponsership(sponser);
}
并将正文标签编辑为如下所示:
<body onload="addSponserShipLoad('IPQ_FUND1');">
但是,尽管控制台没有显示任何错误,但这并没有起作用。
所以,我知道我可能很胖,解决方案很简单,但如果可以的话,请帮忙。
您不必将所有内容都放在变量中:
addSponsership(document.getElementById('IPQ_FUND1'));
addSponsership2(document.getElementById('IPQ_FUND2'));
// ...
在onload事件中,调用一个绑定所有处理程序的函数:
<body onload="setHandlers()">
在该函数中,根据需要为任意多的输入设置onclick处理程序:
function setHandlers() {
document.getElementById('IPQ_FUND1').addEventListener('click', function(event) {
addSponsership(event.target);
});
document.getElementById('IPQ_FUND2')...
}
实际上,您的解决方案应该像上面发布的那样工作。以下是概念的最低限度证明。很难从这个问题中判断出你是否会将不同元素的值输入到同事的函数中,或者它们是否都会关闭同一个元素。下面的"addSponserShipLoad"函数假设了第一种情况。如果第二种情况为true,则只需使用元素id作为函数的参数,并将返回的元素传递给所有被调用的函数。
jsFiddle示例
HTML:
<body onload="addSponserShipLoad()">
<input type="radio" name="IPQ_FUND1" id="IPQ_FUND1" value="Y" checked="checked" onclick="addSponsership(this);"/>
<input type="text" name="nameofperson" id="nameofperson" value="A. Person" />
JS:
function addSponserShipLoad() {
addSponsership(document.getElementById("IPQ_FUND1"));
}
function addSponsership(sponser) {
if (sponser.value == "N") {
document.getElementById('nameofperson').style.display="block";
}
if (sponser.value == "NH")
{
document.getElementById('nameofperson').style.display="none";
}
if (sponser.value == "Y") {
document.getElementById('nameofperson').style.display="none";
}
}
编辑:将fiddle中的"IPQ_FUND1"元素的值更改为"N",以查看它在做什么。
相关文章:
- 为什么我可以引用Javascript中尚未定义的变量
- 有没有一种方法可以通过只引用JavaScript来执行代码
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- 引用Javascript中的索引集合
- 通过引用Javascript中的另一个函数来传递对象方法
- 如何从onclick字符串中引用javascript对象函数
- 在jquery事件中引用javascript对象
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 引用javascript嵌入资源,但intellisense没有'我什么也不展示
- 对象属性引用JavaScript中的其他对象属性
- 引用JavaScript变量
- 如何通过引用(javascript)从数组中删除对象
- 我的无引用 JavaScript 对象存在在哪里以及存在多长时间
- 引用javascript对象内的另一个字段
- 如何在启动之前引用javascript窗口元素
- Google Drive是否不再允许从其他网站引用JavaScript文件
- XUL不引用javascript文件
- 我们可以在浏览器会话中跨网页引用 JavaScript 变量吗?
- 如何查找哪些ASPX文件实际引用JavaScript文件
- 从 Jasmine 测试中引用 JavaScript 文件