下面是用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”未完成。
答案 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' />