我的一位同事编写了各种Javsascript函数,它们根据各种输入的答案显示特定的HTML元素。这是其中一个功能的例子,它们都非常相似。在Javascript中引用包含'this'引用的另一个函数
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标签看起来像这样:
<body onload="addSponserShipLoad('IPQ_FUND1');">
但尽管控制台没有显示任何错误,这没有奏效。
所以,我知道我可能会很厚,解决方案会很简单,但如果可以,请帮助。
根据发布代码“addSponsership”没有'IPQ_FUND1'只是'N','NH'和'Y'的情况。这很可能是失败的原因。 – abc123
我想你不需要一个单独的函数来传递赞助商对象。你可以这样做,从body调用这个函数加载'callAllOtherFunctions(objId)',然后在callallotherfunctions中使用id提取对象引用。 'function callAllOtherFunctions(objId) { sponser = document.getElementById(objId); addSponsership(sponser) addSponsership2(sponser) addSponsership3(sponser)}' – dreamweiver
你确定你正在传递一个输入,代码看起来很好看。也许你可以console.log中的一些变量在addSponsershipLoad中,比如'console.log(sponser); console.log(sponser.value)'和addSponsership:'console.log(sponser); console.log(sponser.value)' – HMR