[英]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 的位置,我认为问题可能是它的顺序:
<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.