0

Javascriptを使用して特定のフォルダー(スライドショー)から画像を表示する画像コントロールを含むページがあります。ページ読み込み時に HiddenField Value の値を設定しましたが、Javascript を使用してこれらの値にアクセスしたいと考えています。ただし、ページの読み込み時に隠しフィールドの値を設定した後、Javascript の隠しフィールドの値は NULL を示します。

.aspx ページ:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js"></script>


</head>
     <script type="text/javascript">

         var folderNm = document.getElementById('<%#HiddenFieldFolderName.ClientID%>');
         var MaxIndex = document.getElementById('<%#HiddenFieldMaxIndex.ClientID%>');
         var mainImage = document.getElementById('mainImage');
         //mainImage.src = "Presentations/7/Slide1.GIF";
         //Initilize start value to 1 'For Slide1.GIF'
         var currentIndex = 1;

         //NOTE: Set this value to the number of slides you have in the presentation.
         //var maxIndex = 7;
         var maxIndex = MaxIndex;
         alert("Folder Name " + folderNm + "\n MaxIndex  " + MaxIndex);
         function swapImage(imageIndex) {
             //Check if we are at the last image already, return if we are.
             if (imageIndex > maxIndex) {
                 currentIndex = maxIndex;
                 return;
             }

             //Check if we are at the first image already, return if we are.
             if (imageIndex < 1) {
                 currentIndex = 1;
                 return;
             }

             currentIndex = imageIndex;
             //Otherwise update mainImage
             //document.getElementById("mainImage").src = 'PPT/GIFs/Slide' + currentIndex + '.GIF';
             document.getElementById("mainImage").src = 'Presentations/' + folderNm + '/' + 'Slide' + currentIndex + '.GIF';
             // document.getElementById("mainImage").src = 'Presentations/7/Slide' + currentIndex + '.GIF';
             return;
         }
    </script>
<body>
    <form id="form1" runat="server" >
        <div>
            <div>

               <%-- <img src="PPT/GIFs/Slide1.GIF" id="mainImage" name="mainImage" width="50%" height="50%" alt="">--%>
                <img  id="mainImage" name="mainImage" width="25%" height="25%" alt="">
            </div>
            <div>
                <a href="#" onclick="swapImage(0);">
                    <img src="/images/firstss.png" border="0" alt="First"></a>
                <a href="#" onclick="swapImage(currentIndex-1);">
                    <img src="/images/prev.png" border="0" alt="Previous"></a>
                <a href="#" onclick="swapImage(currentIndex+1);">
                    <img src="/images/nexts.png" border="0" alt="Next"></a>
                <a href="#" onclick="swapImage(maxIndex);">
                    <img src="/images/lasts.png" border="0" alt="Last"></a>
            </div>
            <div>
                <asp:HiddenField ID="HiddenFieldMaxIndex" runat="server" />
                <asp:HiddenField ID="HiddenFieldFolderName" runat="server" />

            </div>
        </div>
    </form>
</body>

</html>

.aspx.cs ファイル内:

protected void Page_Load(object sender, EventArgs e)
        {
            string foldername = string.Empty;
            if (Request.QueryString["di"] != null)
            {
                foldername = Request.QueryString["di"].ToString();
                HiddenFieldFolderName.Value = foldername;
                HiddenFieldMaxIndex.Value = Request.QueryString["Files"].ToString();
            }

    }

ここで、非表示フィールドの値は、alert() ボックスで null を示しています。助けてください。

4

3 に答える 3

1

変更する必要があります

<%#HiddenFieldFolderName.ClientID%>

<%= HiddenFieldFolderName.ClientID %>

ASP.NETインライン式この質問<%#HiddenFieldMaxIndex.ClientID%>を参照してくださいについても同じことを行います

于 2013-04-17T09:46:31.803 に答える
0

への参照を既に追加しているjqueryので、それを使用しないのはなぜですか?

var folderNm= $("#<%= HiddenFieldFolderName.ClientID %>").val();
var index= $("#<%= HiddenFieldMaxIndex.ClientID %>").val();

alert("Folder Name " + folderNm+ "\n MaxIndex  " + index);

他の人にも同じことをする..

非表示フィールドにアクセスすると、ドキュメントの準備ができていない可能性があるため、上記のみを使用しても機能しません。

 var currentIndex = 1;
   var folderNm  = 0;
   var MaxIndex = 0;
   alert($("#<%= HiddenFieldFolderName.ClientID %>").val()); // this will return null

   // but when document ready you can get values, 
    $(document).ready(function () {
        folderNm= $("#<%= HiddenFieldFolderName.ClientID %>").val();
        MaxIndex= $("#<%= HiddenFieldMaxIndex.ClientID %>").val();
        alert("Folder Name " + folderNm+ "\n MaxIndex  " + MaxIndex); 
    });

jqueryすべてのコードをswapImage関数内に配置してチェックせずにこれをチェックする必要がある場合は、機能します。

REF : jquery ID セレクター (“#id”)

于 2013-04-17T09:57:55.870 に答える
0

ページのソースを確認すると、非表示の入力が表示されますか?

私が正しければ (最近 Web フォームをあまり使用していません)、ビルドイン asp:HiddenField は生成された HTML にフィールドを配置しません。そのため、JavaScript 関数はフィールドを見つけることができず、null を返しています。

asp:TextBox コンポーネントを使用し、css (display:none;) を使用して非表示にすることができます。このように、テキスト ボックスは HTML でレンダリングされますが、エンド ユーザーには表示されません (ページのソースを検索している場合を除く)。JavaScript はコントロールを見つけ、テキスト ボックスの値を読み取ることができます。

この種のバグに対処するには、Firefox の Firebug や Chrome のページ インスペクターなどのツールを使用してみてください。

于 2013-04-17T09:49:38.457 に答える