解决方案 »

  1.   

    <input name="commentscorestr" id="commentscorestr" type="hidden" />
    <select name="score" id="score" onchange="return setreward(11,event.target.selectedIndex);">
    <option value="-1" >--请选择--</option>
    <option value="5" id="reward5_11" >非常好(5)</option>
    <option value="4" id="reward4_11" >很好(4)</option>
    <option value="3" id="reward3_11" >好(3)</option>
    <option value="2" id="reward2_11" >一般(2)</option>
    <option value="1" id="reward2_11" >差(1)</option>
    </select><script>
    var hdrewardid = "commentscorestr";
    function setreward(rewardid,value) {
    if(value===0){
    return;
    }
      var hdreward = document.getElementById(hdrewardid);
        if(hdreward.value.indexOf("@" + rewardid +"@") > -1 ) {
            var reg = new RegExp("@" + rewardid +"@\\d");
            hdreward.value = hdreward.value.replace(reg,"@" + rewardid +"@" + value);
        } else {
            hdreward.value += "@" + rewardid +"@" + value;
        }
    return false;
    }</script>
      

  2.   

    就是一个组合值而已,哪来这么麻烦的逻辑呀
    第一种:按你的思路使用setreward函数进行控制
    <script type="text/javascript">
        function setreward(obj) { 
            document.getElementById('commentscorestr').value = obj.value==-1 ? '' : '@11@'+obj.value;
        }
    </script><input name="commentscorestr" id="commentscorestr" type="text" /> 
    <select name="score" id="score" onchange="setreward(this)"> 
    <option value="-1" >--请选择--</option> 
    <option value="5">非常好(5)</option> 
    <option value="4">很好(4)</option> 
    <option value="3">好(3)</option> 
    <option value="2">一般(2)</option> 
    <option value="1">差(1)</option> 
    </select>
    第二种:不使用独立的function
    <input name="commentscorestr" id="commentscorestr" type="text" /> 
    <select name="score" id="score" onchange="document.getElementById('commentscorestr').value=this.value==-1?'':'@11@'+this.value"> 
    <option value="-1" >--请选择--</option> 
    <option value="5">非常好(5)</option> 
    <option value="4">很好(4)</option> 
    <option value="3">好(3)</option> 
    <option value="2">一般(2)</option> 
    <option value="1">差(1)</option> 
    </select>PS:不知道你什么样的需求,需要这样子去做.你最后要处理数据的时候,取到它的值,然后 ['@11@'+值] 去组合一下不就行了.为什么还要onchange中这么转一下?
      

  3.   

    <select name="score" id="score" onchange="setreward(11,this.value);">
    <option value="-1" >--请选择--</option>
    <option value="5" id="reward5_11" >非常好(5)</option>
    <option value="4" id="reward4_11" >很好(4)</option>
    <option value="3" id="reward3_11" >好(3)</option>
    <option value="2" id="reward2_11" >一般(2)</option>
    <option value="1" id="reward2_11" >差(1)</option>
    </select>
      

  4.   

    因为你这示例中需要在值中保存对应的id,我猜你做的应该是一个类似于多类评分的一个东东,你未例中的11应该指的是某个需要评分的内容ID,那你可以制定一个规则来实现批量的操作
    <script type="text/javascript">
        function getScoreList(obj) {
            //前提将所有的待评分内容置于div[id=scoreList]之内 
            var selList = document.getElementById('scoreList').getElementsByTagName('select'),//获取所有待评分的select集合
                i       = 0,
                j       = selList.length,
                id      = 0,
                score   = [];
            for(;i<j;){
                //在select中使用自定义的属性score-for来保存其对应的ID
                id = selList[i].getAttribute('score-for');
                //获取评分结果
                score.push('@'+id+'@'+selList[i++].value);
            };
            
            //如需转化为字符串使用:var _score=score.join(',');即可:@1@评分值,@2@评分值……@n@评分值        alert(score.join(','))
        }
    </script><div id="scoreList">
        <h4>项目一评分:</h4>
        <select score-for="1"> 
            <option value="-1" >--请选择--</option> 
            <option value="5">非常好(5)</option> 
            <option value="4">很好(4)</option> 
            <option value="3">好(3)</option> 
            <option value="2">一般(2)</option> 
            <option value="1">差(1)</option> 
        </select>
        <h4>项目二评分:</h4>
        <select score-for="2"> 
            <option value="-1" >--请选择--</option> 
            <option value="5">非常好(5)</option> 
            <option value="4">很好(4)</option> 
            <option value="3">好(3)</option> 
            <option value="2">一般(2)</option> 
            <option value="1">差(1)</option> 
        </select>
        <h4>项目三评分:</h4>
        <select score-for="3"> 
            <option value="-1" >--请选择--</option> 
            <option value="5">非常好(5)</option> 
            <option value="4">很好(4)</option> 
            <option value="3">好(3)</option> 
            <option value="2">一般(2)</option> 
            <option value="1">差(1)</option> 
        </select>
        <br />
        <input type="button" value="测试取值" onclick="getScoreList()"/>
    </div>