Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用另一个包含';这';Javascript中的引用_Javascript_Html_Variables_Onload - Fatal编程技术网

引用另一个包含';这';Javascript中的引用

引用另一个包含';这';Javascript中的引用,javascript,html,variables,onload,Javascript,Html,Variables,Onload,我的一位同事编写了各种Javsascript函数,这些函数显示了依赖于各种输入答案的某些HTML元素。这是其中一个函数的示例,它们都非常相似 function addSponsership(sponser) { if (sponser.value == "N") { document.getElementById('nameofperson').style.display = "block"; document.getElementById('nameof

我的一位同事编写了各种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);"/>
function addSponsershipLoad(inputID){
  sponser = document.getElementById(inputID);
   addSponsership(sponser);
    }
<body onload="addSponserShipLoad('IPQ_FUND1');">
问题是我找不到一种方法来引用需要检查其值的特定元素。理想情况下,我需要在不编辑同事编写的原始函数的情况下找到解决方案

我试图通过创建另一个类似于以下内容的函数来单独完成此操作:

<input type="radio" name="IPQ_FUND1" id="IPQ_FUND1" value="Y" checked="checked" onclick="addSponsership(this);"/>
function addSponsershipLoad(inputID){
  sponser = document.getElementById(inputID);
   addSponsership(sponser);
    }
<body onload="addSponserShipLoad('IPQ_FUND1');">
并编辑主体标记,使其如下所示:

<input type="radio" name="IPQ_FUND1" id="IPQ_FUND1" value="Y" checked="checked" onclick="addSponsership(this);"/>
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()">

实际上,看起来您的解决方案应该像上面所发布的那样工作。下面是一个概念的最小证明。从这个问题很难判断您是将不同元素的值提供给同事的函数,还是它们都将在同一个元素上关闭。下面的“addSponserShipLoad”函数假设第一种情况。如果第二种情况为true,则只需将元素id用作函数的参数,并将返回的元素传递给所有被调用的函数

HTML:


编辑:将fiddle中“IPQ_FUND1”元素的值更改为“N”,以查看它在做什么。

根据张贴的代码,“addSponsership”没有“IPQ_FUND1”的情况,只有“N”、“NH”和“Y”。这可能是失败的原因。我认为你不需要一个单独的函数来传递发起对象。您可以这样做,在加载时从body调用此函数
callAllOtherFunctions(objId)
然后在callAllOtherFunctions中使用id提取对象引用
function callAllOtherFunctions(objId){sponser=document.getElementById(objId);addSponsership(sponser)addSponsership 2(sponser)addSponsership 3(sponser)}
您确定要传递输入吗,从我看到的代码看起来不错。也许您可以在addSponsershipLoad中记录一些变量,比如
console.log(sponser);console.log(sponser.value)
和addSponsership:
console.log(sponser);console.log(sponser.value)
因为它提到了一个单选按钮的状态/值是在身体负荷时考虑的,所以我们只能提取一次与id相关的对象,并将其传递给各种函数,如addSponsership()、addSponsership2()…等等。我知道这很简单!这听起来很冒险,似乎很有用,但上面的答案要简单得多。谢谢你的帮助:)