简体   繁体   English

javascript:在 onchange 中传递数组 function

[英]javascript: pass array in onchange function

I'm trying to pass an array in an onchange function but running into errors.我正在尝试在 onchange function 中传递一个数组,但遇到错误。

The function is in the head tag as: function 在头部标签中为:

<script>
        function displayReference(rA) {
            var rsb = document.getElementById("refSelectBox");
            var id = rsb.value;
            dr = document.getElementById("display-ref");
            dr.innerHTML = '</br>' + rA[id];
            return true;
        }
    </script>

where rA should be an array.其中 rA 应该是一个数组。 I've tried two different ways of sending the rA array through onchange:我尝试了两种通过 onchange 发送 rA 数组的不同方法:

1. 1.

 <select class="selectResults" id="refSelectBox" onchange=displayReference(this.refArray)>

(produces "TypeError: undefined is not an object (evaluating 'rA[id]')") (产生“TypeError: undefined is not an object (evalating 'rA[id]')”)

2. 2.

 <select class="selectResults" id="refSelectBox" onchange=displayReference(refArray)>

(produces "ReferenceError: Can't find variable: refArray"). (产生“ReferenceError:找不到变量:refArray”)。

Through a console.log(refArray) just before producing the select box code, I know that refArray exists and is populated.通过在生成 select 框代码之前的 console.log(refArray),我知道 refArray 存在并已填充。

If it's any help in providing answers, this is all in the environoment for a MS Word add-in.如果在提供答案方面有任何帮助,这一切都在 MS Word 加载项的环境中。

Thanks for any help in advance.感谢您提前提供任何帮助。

I suggest this - it will test there is a refArray and also pass the select to the function.我建议这样做 - 它将测试是否存在 refArray 并将 select 传递给 function。

function displayReference(rsb) {
  if (refArray && refArray.length>0) {
    var id = rsb.value;
    var dr = document.getElementById("display-ref");
    dr.innerHTML = '</br>' + refArray[id];
  }
}

and then use然后使用

<select class="selectResults" id="refSelectBox" onchange="displayReference(this)">

Since you are not providing where you are defining refArray I think the issue could be the order of it:由于您没有提供定义 refArray 的位置,我认为问题可能是它的顺序:

  • Ensure to define refArray before your select tag确保在您的 select 标签之前定义 refArray

 <script> var refArray = ["Value One", "Value Two"] </script> <select class="selectResults" id="refSelectBox" onchange=displayReference(refArray)> <option>0</option> <option>1</option> </select> <p id="display-ref"></p> <script> function displayReference(rA) { var rsb = document.getElementById("refSelectBox"); var id = rsb.value; dr = document.getElementById("display-ref"); dr.innerHTML = rA[id]; return true; } </script>

If this isn't possible you could simplify your solution by using a string to get an array which you define below (in your js).如果这不可能,您可以通过使用字符串来获取您在下面定义的数组(在您的 js 中)来简化您的解决方案。 You can convert this string to a variable.您可以将此字符串转换为变量。 Read more about that here . 在此处阅读更多相关信息。

 <select class="selectResults" id="refSelectBox" onchange="displayReference('refArray')"> <option>0</option> <option>1</option> </select> <p id="display-ref"></p> <script> var refArray = ["Value One", "Value Two"] function displayReference(rA) { var rsb = document.getElementById("refSelectBox"); var id = rsb.value; dr = document.getElementById("display-ref"); dr.innerHTML = window[rA][id]; return true; } </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM