javascript:在 onchange 函数中传递数组
2021-02-01
1241
我尝试在 onchange 函数中传递一个数组,但遇到了错误。
该函数位于 head 标签中,如下所示:
<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>
其中 rA 应该是一个数组。 我尝试了两种不同的方法通过 onchange 发送 rA 数组:
<select class="selectResults" id="refSelectBox" onchange=displayReference(this.refArray)>
(产生“TypeError:undefined 不是对象(评估‘rA[id]’)”)
2.
<select class="selectResults" id="refSelectBox" onchange=displayReference(refArray)>
(产生“ReferenceError:找不到变量:refArray”)。
通过生成选择框代码之前的 console.log(refArray),我知道 refArray 存在并且已填充。
如果它有助于提供答案,这一切都在 MS Word 插件的环境中。
提前感谢任何帮助。
2个回答
我建议这样做 - 它将测试是否存在 refArray 并将选择传递给函数。
function displayReference(rsb) {
if (refArray && refArray.length>0) {
var id = rsb.value;
var dr = document.getElementById("display-ref");
dr.innerHTML = '</br>' + refArray[id];
}
}
然后使用
<select class="selectResults" id="refSelectBox" onchange="displayReference(this)">
mplungjan
2021-02-01
由于您没有提供定义 refArray 的位置,我认为问题可能是它的顺序:
- 确保在 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>
如果这不可能,您可以使用 字符串获取下面定义的数组 (在您的 js 中)来简化您的解决方案。您可以将此字符串转换为变量。阅读 此处 了解更多信息。
<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>
Lars Flieger
2021-02-01