javascript:无法弄清楚错误!

时间:2011-02-17 10:12:51

标签: javascript html

下面是用JavaScript编写的脚本,其目的是从输入中获取一个句子,并将其拆分为消除空格的单词数组。每个单词应该进一步分为2或3个字母,具体取决于单词的大小,忽略其中的剩余字母。

如果所述单词大于1且小于5或大于6则应为四个字母单词。所有单词的输出应该用中间的下划线连接。

以下是无效的代码,我无法弄清楚。请指导我让它运作

document.getElementById("cliename").onchange = function(event){
var list_cname = new Array();
var cname = document.submit.cliename.value;
list_cname = cname.split(" ");
var list_len = list_cname.length;
var valu;
var final_valu;
var i=0;

for (i=0;i<=list_len;i++){ 
        var sub_list = list_cname[i];
        var sub_list_len = sub_list.length;
        if(sub_list_len>=1 && sub_list_len<=5 ){
            sub_list_len=sub_list_len-1;
            }
            else if(sub_list_len>=6 ){
                    sub_list_len=4;
                }
        var list_val = list_cname[i].substring(0,sub_list_len);
        valu = list_val;
        final_valu = valu + "_" + final_valu;  
    }
    document.write("list -" + cname + ", len - " + list_len + ", final " + final_valu);
}

我得到的错误是“SUB_LIST”未完成。

4 个答案:

答案 0 :(得分:2)

对于初学者,请更改

for (i=0;i<=list_len;i++)

for (i=0;i<list_len;i++)

list_cname[i]将超出界限。

答案 1 :(得分:1)

粗略看一下代码,不知道错误等等。

您正在引用:sub_list_len但这不是长度。

您需要执行以下操作:

sub_list_len.length

var sub_list_len = sub_list.length

答案 2 :(得分:1)

我对您的代码进行了一些更改,并在jsFiddle上添加了示例。也贴在

下面
document.getElementById("cliename").onchange = function(event){
    var list_cname = [];
    var cname = this.value;
    list_cname = cname.split(" ");
    var list_len = list_cname.length;
    var valu = "";
    var final_valu = "";
    var i=0;
    for (i=0;i<=(list_len-1);i++)
    {
        var sub_list = list_cname[i];
        var sub_list_len = sub_list.length;

        if(sub_list_len > 1 && sub_list_len <= 5 )
        {
            sub_list_len = sub_list_len-1;
        }
        else if(sub_list_len>=6 )
        {
            sub_list_len = 4;
        }

        var list_val = list_cname[i].substring(0,sub_list_len);
        valu = list_val;
        final_valu = valu + "_" + final_valu;
    }
    document.write("list - \"" + cname + "\", len - " + list_len + ", final " + final_valu);
};

答案 3 :(得分:1)

var list_cname = new Array();
var cname = document.getElementById('cliename').value;
list_cname = cname.split(" ");

var list_len = list_cname.length;
var valu;
var final_valu;
var i = 0;

for (i = 0; i <= list_len; i++) {
  alert();
  var sub_list = list_cname[i];
  var sub_list_len = sub_list;
  if (sub_list_len >= 1 && sub_list_len <= 5) {
    sub_list_len = sub_list_len - 1;
  } else if (sub_list_len >= 6) {
    sub_list_len = 4;
  }
  var list_val = list_cname[i].substring(0, sub_list_len);
  valu = list_val;
  final_valu = valu + "_" + final_valu;
}

alert("list -" + cname + ", len - " + list_len + ", final " + final_valu);
<input type='text' id='cliename' value='1 2 3' />