使用JavaScript将字符串转换为字符数组

时间:2014-09-13 09:13:49

标签: javascript html

继续Javascript - Radio Button onChange

这是我的代码:

<html>
<head>
<script type="text/javascript"> 
    function Change(radio)
    {
    for(i = 1; i <=3; i++)
    {
        if(i == radio.value)
        {
            setvalue = "Y";
            value = setvalue;
            radiovalue = radio.value;
        }
        else
       {
            setvalue = "N";
            value = setvalue;
            radiovalue = radio.value;
       }
       ChangeValue(setvalue,value);
    }

    function ChangeValue(setvalue,value)
    {
        var getvalue = value;
        document.write(getvalue);
    }
}
</script>
</head>

<body>
<?php
for($i = 1; $i <= 3; $i++)
{
?>
    <input type="radio" name="choice" value="<?php echo $i;?>" onchange="Change(this)"      /><br />
<?php   
}
?>
</body>
</html>

从上面的代码中,如果我点击第一个单选按钮,则输出为YNN 现在我想用逗号(YNN)分隔值并将结果放入数组(&#34; Y&#34;,&#34; N&#34;,&#34; N&#34;)。 />

我在ChangeValue函数中写了以下内容:

function ChangeValue(setvalue, value)
{
     var getvalue = value;
     document.write(getvalue);
     var seperate = new array();
     seperate = getvalue.spilt(",");
}

但是上面的代码并没有把我的值放到数组中。
我究竟做错了什么?有什么解决方案可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您必须将split字符串分隔为单独的字符数组。

var str = 'YNN'; //or whatever
var strWithComma = str.split(''); //to char array

在此之后,您可以join将字符转换为新字符串以显示输出。

var str = 'YNN';
var strWithComma = str.split('').join(','); //'YNN' (string) --> ['Y','N','N'] (string/char array) --> "Y,N,N" (string)

希望这有帮助

<强> Demo

答案 1 :(得分:0)

JavaScript String对象具有split方法,可以执行您要求的操作。它根据指定的分隔符对字符串进行分区,并返回一个数组,每个分区都有自己的索引。如果使用空白(空字符串)分隔符进行拆分,则将字符串标记为单个字符。

要将单选按钮的值作为字符串获取,您可以遍历它们并检查每个按钮的value属性。

var input = "YNN"
var result = input.split(''); // returns ["Y", "N", "N"]

&#13;
&#13;
var valStr = "";

function main() {
    var radioBtns = document.getElementsByName("choice");

    for (var i = 0; i < radioBtns.length; i++) {
        radioBtns[i].onchange = valChange;
    }
    valStr = Array(radioBtns.length + 1).join("N")
}

function valChange(event) {
    var changedElem = event.target;
    var elemValue = changedElem.value;
    var elemIdx = +elemValue - 1;
    var resultStr = replaceChar(valStr, elemIdx, 'Y');

    getElem("outputStr").innerHTML = resultStr;
    getElem("outputArr").innerHTML = resultStr.split('');
}

function replaceChar(str, idx, chr) {
    return str.substr(0, idx) + chr + str.substr(idx + chr.length);
}

function getElem(id) {
    return document.getElementById(id);
}

window.onload = main;
&#13;
span[id^="output"] {
    border: 2px solid black;
    margin: 2px;
    width: 50px;
}
div {
    margin-top: 7px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Select an option:
<br />
<input type="radio" name="choice" value="1" />
<br />
<input type="radio" name="choice" value="2" />
<br />
<input type="radio" name="choice" value="3" />

<div>String Output: <span id="outputStr"> </span>
</div>
<div>Array Output: <span id="outputArr"> </span>
</div>
&#13;
&#13;
&#13;