none
javascript 抓取 div 內的物件 RRS feed

  • 問題

  • <asp: DataList ID="dlWebsite" runat="server" RepeatDirection="Horizontal" OnItemDataBound="dlWebsite_ItemDataBound">
        <ItemTemplate>

            <asp:HiddenField ID="hfWebsiteId" runat="server" Value='<%# Eval("websiteId") %>' />
            <asp:HiddenField ID="hfMainFolder" runat="server" Value='<%# Eval("mainFolder") %>' />
            <div id="website" class="btn_website" onmouseover="onMouseOver(this)">
                <asp:Literal ID="websiteName" runat="server" Text='<%# Eval("websiteName") %>'></asp:Literal>
                <div id="content_website">
                    <uc1:ucMenu2 ID="UcMenu2_1" runat="server" />
                </div> 
            </div>

        </ItemTemplate>
        <ItemStyle VerticalAlign="top" />
    </asp: DataList>
    <div id="show" align="left" style="width: 100px"></div>

     

    <script language="javascript" type="text/javascript">
        
        function onMouseOver(obj)
        {
            //debugger;
            var element = obj;
            如何在此時,抓取 <div id="content_website"> 呢?
                
            //var show = document.getElementById("show");
            //show.innerHTML = temp;
        }
    </script>

     

    麻煩高手們幫忙~~謝謝 !!

    2008年11月11日 上午 03:00

解答

  • ID 最好給定一個唯一的編號,不然瀏覽器無法得知你要抓哪一個 div,可能到頭來回傳的就只有第一個。

     

    解決方法是把 <div> 加上 runat="server",由伺服器來配發 ID (client ID),你再把這個 ID 輸出到用戶端,這樣就可以用 JavaScript 去抓了。

     

    2008年11月11日 上午 03:44
    版主
  •  

    Code Snippet

    <div id="website" runat="server" class="btn_website" onmouseover="onMouseOver("<%= content_website.ClientID %>)">
      <div id="content_website" runat="server">
        XXXXX
      </div>
    </div>

    <script language="javascript" type="text/javascript">   
      function onMouseOver(content_website_id)
      {
        var show = document.getElementById(content_website_id);
         ...
      }
    </script>

     

     

    2008年11月21日 上午 05:26

所有回覆

  • ID 最好給定一個唯一的編號,不然瀏覽器無法得知你要抓哪一個 div,可能到頭來回傳的就只有第一個。

     

    解決方法是把 <div> 加上 runat="server",由伺服器來配發 ID (client ID),你再把這個 ID 輸出到用戶端,這樣就可以用 JavaScript 去抓了。

     

    2008年11月11日 上午 03:44
    版主
  • 謝謝小朱提醒要加 runat="server" 讓 ID 變成唯一編號。

     

    但我是在 <div id="website" runat="server" class="btn_website" onmouseover="onMouseOver(this)"> 此處

    進入 onMouseOver function ,而我想抓取 id="website" 內的 <div id="content_website" runat="server"> 標籤

    請問小朱大~~這 javascript 要如何做呢?謝謝... 

    2008年11月11日 上午 04:54
  • 你是直接用 id.method 的話,要注意的是,若在 from 內要用 fromid.id.method 。

     

    其它的巢狀語法都可以直接使用 id ,比如說 table 內、div 內。

     

    2008年11月11日 上午 05:40
  • 因為你的div是runat="server"的控制項

    強烈建議你如果再ASPX頁面的呼叫使用<%= website.ClientID %>方式

    因為如果使用MasterPage(或其他容器)的話你的ID會配合Master(或其他容器)作變更,

    導致javascript找不到物件。

    (如果你有用Master或其他控制項包住你的div你可以在網頁跑出來的時候按右鍵檢視原始碼看看,你的ID是不是原來的樣子。)

     

    function getInnerHTML()
            {
                //取得website物件
                var div1 = document.getElementById("<%= website.ClientID %>");
               
                //取得website物件裡的所有div物件
                var divCollection = div1.getElementsByTagName("div");
               
                for(var i=0; i<= divCollection.length - 1; i++)
                {
                    //判斷只要div物件的名稱是content_website就執行你所要的程式碼
                    if(divCollectionIdea.id == "<%= content_website.ClientID %>")
                        alert(divCollectionIdea.innerHTML);
                }
            }

     

    待達羅斯工作室

    http://www.daedalus.com.tw/

    http://www.daedalus.com.tw/blog/

    2008年11月20日 下午 09:36
  •  

    Code Snippet

    <div id="website" runat="server" class="btn_website" onmouseover="onMouseOver("<%= content_website.ClientID %>)">
      <div id="content_website" runat="server">
        XXXXX
      </div>
    </div>

    <script language="javascript" type="text/javascript">   
      function onMouseOver(content_website_id)
      {
        var show = document.getElementById(content_website_id);
         ...
      }
    </script>

     

     

    2008年11月21日 上午 05:26