<body>
    <select id="cats" size="1">
        <option value="1">calico</option>
        <option value="2">tortie</option>
        <option value="3" selected>siamese</option>
    </select>  <script type="text/javascript">
  <!--
// 编码,此步骤应该在 server 端处理。
var s = escape("tuo'la");
alert(s);
document.getElementById("cats").options.add(new Option(unescape(s)));
  //-->
  </script>
 </body>

解决方案 »

  1.   

    var s=escape("tuo"la");
    若是出現雙引號還是一樣會出錯。
      

  2.   

    看需求由于这里的值应该没有回车之类的,可以写到hidden里
    <input name="aaa" type="hidden" value="把值打在这里">
    <script language=javascript>
    var str=document.getElementById("aaa").value
    document.getElementById("cats").options.add(new Option(str,str));
    </script>
      

  3.   

    sorry,要写成这样,不过里面不能包括HTML标签,这里的情况是下拉框应该也不会有吧
    <textarea name="aaa" style="display:none">把值打在这里</textarea>
    <script language=javascript>
    var str=document.getElementById("aaa").value
    document.getElementById("cats").options.add(new Option(str,str));
    </script>
      

  4.   

    對不起,不喜歡用隱藏值來實現,一定有其它辦法的,目前仍在嘗試中,不過進度有點兒慢。在網上找到了這樣一段代碼可能對我很是有幫助:
    function escape($str) {
      preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) {
        if(ord($v[0]) < 128)
          $ar[$k] = rawurlencode($v);
        else
          $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
      }
      return join("",$ar);
    }function unescape($str) {
      $str = rawurldecode($str);
      preg_match_all("/(?:%u.{4})|.+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u" && strlen($v) == 6)
          $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
      }
      return join("",$ar);
    }
      

  5.   

    转义
    $str = addslashes($str);
    echo("sel.options[$i]=new Option('$str','$str');");