<input type="hidden" name= "chapterID" id="chapterID" [email protected] /> 我想给这个隐藏域赋值 然后和JS交互 但是 好像不支持这样赋值 请问有什么解决方法

解决方案 »

  1.   

    如果改用MVC3的 @Html.HiddenFor(model => model.chapterID, new { id="viewChapterID"})
    可以生成正确的带value的 隐藏域 但是调用JS我取不到其中的value值
      

  2.   

    看你浏览器源代码里面生成了什么
    document.getElementById("").value是可以取到的,代码要放在对象生成之后执行
      

  3.   

    网页源码上的值是正确的<input id="viewChapterID" name="chapterID" type="hidden" value="92" />JS:
     function SelectChapterDefaultOption() {
            var options = document.getElementById("chapters").options;
            for (i = 0; i < options.length; i++) {
                if (options[i].value == document.getElementById("viewChapterID").value) {
                    alert("2");
                    options[i].selected = true;
                }
                
            }
        }
    不知道是否是 标红的比较有问题
      

  4.   

    我用if (options[i].value == "92")
    测试过是正确的 不知道这个取值是否有问题
      

  5.   

    本帖最后由 net_lover 于 2011-10-01 21:21:48 编辑
      

  6.   

    如果你说的是真的,是不应该出错的,下面的代码是满足你说的条件的,完全没有问题<input id="viewChapterID" name="chapterID" type="hidden" value="92" />
    <input id="viewChapterIDXXX" name="chapterID" type="hidden" value="93" />
    <select id=chapters>
    <option value="93">93
    <option value="92">92
    </select>
    <input type=button onclick="SelectChapterDefaultOption()" value=ceshi>
    <script>
     function SelectChapterDefaultOption() {
      var options = document.getElementById("chapters").options;
      for (i = 0; i < options.length; i++) {
      if (options[i].value == document.getElementById("viewChapterID").value) {
      alert("2");
      options[i].selected = true;
      }
        
      }
      }
    </script>
      

  7.   

    这个select 不是静态的 而是由ajax生成的 
    在网页上只显示  
    <select id="chapters" name="chapters"></select>
    而没有option 
    option是由以下代码生成
     function GetChapters() {
            $("#chapters").empty(); //清空章节SELECT
            $("#chapters").append("<option value='-1'>--请选择章节--</option>");
            var url = "/Question/GetChapterList";
            $.getJSON(url, { courseID: $("#courses").val(), rnd: Math.random() }, function (data) {
                $.each(data, function (id, item) {
                    $("<option></option>").val(item["chapterID"]).text(item["chapterName"]).appendTo($("#chapters"));
                });
            });
        }                      
      

  8.   

    本帖最后由 net_lover 于 2011-10-01 21:35:51 编辑
      

  9.   

    恩 这个倒是对的 alert("2");的循环次数是对的
     options[i].value == document.getElementById("viewChapterID").value
    的判断条件却并不成立
      

  10.   

     $(document).ready(function () {
            $("#singleSelectAnswers").hide();
            $("#judgeQuestionAnswers").hide();
            if ($("#courses").val() != "") {
                GetChapters();
                GetQuestionTypes();
                SelectChapterDefaultOption();
                SelectQuestionDefaultOption(); 
            }
    这个函数是放在这个里面执行的
      

  11.   

    判断条件却并不成立
    你分别打出
    alert("options[i].value=" + options[i].value )
    alert("viewChapterID.value=" + document.getElementById("viewChapterID").value)alert("options[i].value=" + options[i].value.length )
    alert("viewChapterID.value=" + document.getElementById("viewChapterID").value.length )
    就知道为什么不是相同的了
      

  12.   

    找到毛病了 获取隐藏域的值的时候 值的后面有一个空格 
    不知道是否是string结尾的\0导致的