我的一位同事編寫了各種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