代码之家  ›  专栏  ›  技术社区  ›  vicatcu

在YUI3中,为什么Y.one返回null?

  •  3
  • vicatcu  · 技术社区  · 15 年前

    我有一个网页,验证为XHTML1.0严格。我使用的是YUI3,我使用的是基于种子文件的实例化。在我的javascript代码中的几个地方,我做了如下操作:

    YUI().use("node", function(Y){
      var node = Y.one("#my_element_id");
    });
    

    <form id="component_form" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    ...
    </form>
    

    我确信它是格式良好的标记,所以这不是问题所在。如果我这样做了:

    YUI().use("node", function(Y){
      var node1 = Y.one("#component_form");
      var node2 = document.getElementById("component_form");
      var node3 = Y.one(document.getElementById("component_form"));
    });
    

    有没有人有过类似的经历,或者知道这是不是一个YUI3 bug,或者什么?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
        <!-- metadata -->
        <title>Inventory Management System</title>      
        <script type="text/javascript" src="http://yui.yahooapis.com/3.1.1/build/yui/yui-min.js"></script>
        <script src="./util.js" type="text/javascript"></script>    
        <style type="text/css">
          td{
            vertical-align:text-top;
          }  
    
          legend{
            border: 2px #D4D0C8 groove;
            padding: 2px;       
            font-weight: bolder; 
          }
    
          fieldset{
            border: 2px #D4D0C8 groove;
            padding-bottom: 12px;              
            padding-left: 10px;
            padding-right: 10px;
          }
    
          label{
            font-weight: bold;
          }
    
          #err_container{
            color: red;
            display: none;
            visibility: hidden;
            margin: 10px;
          }
    
          #status_container{
            color: green;
            display: none;
            visibility: hidden;
            margin: 10px;
          }      
        </style>
    
      </head>
      <body>
        <div id="canvas">
          <form id="st_frm" method="post" action="" style="display:none; visibility: hidden;">        
            <fieldset style="border:none; margin:0; padding:0;">          
              <input type="hidden" name="state" id="st" value=""/>            
            </fieldset>
          </form>
    
          <div id="navbar">
                  <a href="#" onclick="goToState(0); return false;">home</a> 
           | components |         <a href="#" onclick="goToState(2); return false;">products</a> 
                </div>
    
    
                  <h1 id="main_h1">
    
                Update Component
                      </h1>
            <form id="component_form" method="post" action="/inventory/index.php">
              <fieldset>            
                <legend id="component_form_legend">Component Information</legend>
                <input type="hidden" id="component_form_id" name="id" value="8"/>
                <input type="hidden" name="state" value="1"/>
                <table>
    
                  <tr>
                    <td><label for="manufacturer_name_id">Manufacturer:</label></td>
                    <td><input type="text" id="manufacturer_name_id" name="manufacturer_name" value="Vishay"/></td>
                  </tr>
                  <tr>
                    <td><label for="manufacturer_part_number_id">Part Number:</label></td>
                    <td><input type="text" id="manufacturer_part_number_id" name="manufacturer_part_number" value="1123114123"/></td>
                  </tr>
    
                  <tr>
                    <td><label for="ct_id">Component Type:</label></td>
                    <td>
                      <select id="ct_id" name="component_type">
                        <option value="0">New Type</option>                    
                                            <option value="5" >sfkd</option>
                                            <option value="6" >qwrqew</option>
    
                                            <option value="7"  selected="selected" >Resistor</option>
    
                      </select>
                      <input id="nct_id" type="text" name="new_component_type" size="10"  style="visibility:hidden; display: none;" />
                    </td>
                  </tr>
                  <tr>
                    <td><label for="description_id">Description:</label></td>
                    <td>
    
                      <textarea id="description_id" name="description" rows="3" cols="25">limits the flow of current...</textarea>
                    </td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>                                  
                    <td>
                                        <input id="component_form_submit_button" type="button" value="Update Component"/>
                      <span id="component_form_hide_when_new" >
                        <input id="component_form_delete_button" type="button" value="Delete Component"/>
    
                        <input id="component_form_new_button"    type="button" value="New Component"/>
                      </span>                  
                      <input id="component_form_delete" name="delete" type="hidden" value="0"/>
                    </td>
                  </tr>
                  <tr>
                    <td colspan="2">
                      <div id="error_container">&nbsp;</div>
                      <div id="status_container">&nbsp;</div>                  
                    </td>
    
                  </tr>
                </table>
              </fieldset>
            </form>
    
            <ul id="component_form_list">        
              <li>
                <a href="#" onclick="setNodeValue('component_form_id', 8); submitForm('component_form'); return false;">Vishay 1123114123</a>
              </li>
    
            </ul>        
    
    
        </div>
    
      </body>
    </html>
    

    编辑

    function submitForm(frmId){
      YUI().use("node", function(Y){
        var frm = Y.one("#" + frmId);    
        var s = typeof frm.submit;
        if(s === 'function'){
          frm.submit();
        }
      });    
    }
    

    function submitForm(frmId){
      YUI().use("node", function(Y){
        var frm = Y.one(document.getElementById(frmId));    
        var s = typeof frm.submit;
        if(s === 'function'){
          frm.submit();
        }
      });    
    }
    

    两者都适用。。。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Fopfong    15 年前

    你错过了一个双引号吗?

    <form id="component_form" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    

    ...

    推荐文章