我在使用此代码时遇到问题。我曾多次尝试对其进行故障排除,似乎已将此问题隔离开来,但无法弄清楚原因。
如果名为string的变量设置为" text v.text,"的形式。代码运行正常,第一个if语句触发句子。如果字符串包含文本但没有" v。"即没有满足搜索分隔符值的任何内容,该函数失败并且不执行第二个if语句。
链接到小提琴:http://jsfiddle.net/qsq4we99/
代码片段,还需要一个带ID"输出文本的html div。"
function brokenCode()
{
//Setting Relevant Variables
var string = "red";
var array = string.split("v.");
var number = array.length;
// Checking location of things
var findText1 = array[0].search("search text");
var findText2 = array[1].search("search text");
//Running Conditional Stuff
if(number > 1)
{
document.getElementById('outputtext').innerHTML = "2+ listed";
}
else if(number < 2)
{
document.getElementById('outputtext').innerHTML = "1 listed";
}
}
brokenCode();
在这个简化的例子中,没有明确的解释为什么需要进行搜索操作(它们存在,因为在实际代码中它们是需要的......但是关于它们的某些东西似乎导致了问题(即使在这个简单的例子中)如果删除了两个搜索,代码将顺利运行。
答案 0 :(得分:0)
如果不检查长度,则无法从数组中开始设置变量。在设置findText1
&amp;之前findText2
,检查以确保数组的长度大于零。
function brokenCode() {
//Setting Relevant Variables
var string = "red";
var array = string.split("v.");
var number = array.length;
if (number > 0) {
// Checking location of things
var findText1 = array[0].search("search text");
var findText2 = array[1].search("search text");
//Running Conditional Stuff
if(number > 1)
{
document.getElementById('outputtext').innerHTML = "2+ listed";
}
else if(number < 2)
{
document.getElementById('outputtext').innerHTML = "1 listed";
}
}
}
brokenCode();