2
<input type=button value='Do Stuff' onClick='document.cookie = "Note_<% Response.Write(arrTest(0,i)) %> = ' + (Document.getElementById("StuffTest<% Response.Write(arrTest(0,i)) %>").value) + '"'>

ここで私がやろうとしているのは、ユーザーがボタンを押したときに、次の値で作成されたCookieが必要なことです。Note_(arrTestの値)=(テキストボックスの値)。

以下のコードは問題なく機能します。

<input type=button value='Do Stuff' onClick='document.cookie = "Note_<% Response.Write(arrTest(0,i)) %> = Awesome!"'>

次の値でCookieを作成します。Note_(arrTestの値)=素晴らしい!

テキストボックスの値をCookieに取り込むために何を間違えましたか?紛らわしい一重引用符と二重引用符のすべてに関係していると思いますので、タイプミスが発生したと思いますが、ここでやろうとしていることは実際にはできないと思う人もいます。

何かご意見は?

4

1 に答える 1

3

document.getElementById has document in all lower case. Your code example uses Document (with a capital D), which will fail.

Separately, your quotes such in the onClick attribute are not quite right. It's best to avoid putting any significant code in those attributes. Instead, define and call a function, like this:

<input type=button
       value='Do Stuff'
       onClick='setCookie("<% Response.Write(arrTest(0,i)) %>);'>

...where the function (inside a <script> tag or in a file referenced by one) looks like this:

function setCookie(name) {
    document.cookie = "Name_" + name + "=" + document.getElementById("StuffTest" + name).value;
}

Depending on the contents of arrTest(0,i), you might need to HTML-encode it as you output it, since you're outputting it to HTML (yes, the code inside an onXYZ attribute is HTML, just like any other attribute's value, so for instance < would need to be &lt;).

于 2013-01-10T14:24:57.260 に答える