为什么这个字符串属性有效?

时间:2014-06-24 17:34:58

标签: javascript

function decinumber(y){
    var x = document.getElementById("areafield");
    if (y.match("del")){
        x.value = x.value.substr(0,(x.value.length-1)); return;
    }
}

我想从x字符串中删除最后一个字符。现在这里的代码实际上有效,但我的问题是为什么这个有效?这听起来很奇怪,但我不知道为什么。 因为,在字符串中第一个字符位于位置0而不是位置1,那么该字符串的总长度减去1给出了该字符串中的最后一个字符,而不是最后一个字符。

例如,考虑这个字符串 - “fireblow”

该字符串的长度为8.“f”位于0位置,因此8-1为7,即该字符串中最后一个字符“w”的位置不是“o”。

3 个答案:

答案 0 :(得分:1)

第二个参数指出要抓取的字符数。由于你想要获取整个X减去一个字符的字符串,你可以获取字符串的长度并减去它的1。

所以现在你的子串状态......

  

从位置0开始从此字符串中抓取7个字符。

要对此进行测试并巩固您的理解,请尝试不同的组合。从位置3开始,只取两个字符。

答案 1 :(得分:0)

substr(start_index,length);

如果你做("areafield").length,你会得到9.如果你做("a").length,你得到1.

所以,如果我们从第一个位置(索引0)的字符开始,然后去8个字符,我们得到

a r e a f i e l
1 2 3 4 5 6 7 8

或者("fireblow").length我们得到8,所以.substr(0,(x.value.length-1))

f i r e b l o
1 2 3 4 5 6 7

答案 2 :(得分:0)

这是有效的,因为substr将字符0取为字符串的长度 - 这里为1

x.value = x.value.substr(0,(x.value.length-1));

另请参阅此JSFiddle -

var text = 'Help';
text = '<h1>' + text.substr(0,(text.length-1)) + 'lo</h1>';

然后text === "<h1>Hello</h1>"