• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascript name="hoge"等に記号を使いたい)

javascriptでname属性に記号を使う方法

このQ&Aのポイント
  • javascriptでname属性に記号を使いたい場合、カッコ[]を付けることで対応できます。
  • しかし、カッコを付けるとjavascriptがエラーになり、うまく動作しないことがあります。
  • エスケープの方法を試してみましたが、うまくいきませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

昔からある方法 document.form1.elements['hoge[]'][0].value=1; DOMを使って var elms=document.getElementsByName('hoge[]'); elms[0].setAttribute('value', '1'); 他の方法 <input name="hoge1"> <input name="hoge2"> としておいて、 JavaScriptは document.form1.hoge1.value=1; PHPを書き換える。 // $_POSTの上書きはおすすめしません。例として。 $_POST['hoge']=array($_POST['hoge1'], $_POST['hoge2']);

yuzuru0024
質問者

お礼

回答ありがとうございます。

その他の回答 (3)

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

ifでnameプロパティを判定すればいいんじゃないでしょうか? 下記コードで正常動作することを確認しました。 ------ <form name='form1'> <input size='10' type='text' name='hoge[]' value='0'> </form> <script type='text/javascript'> var input = document.form1.getElementsByTagName('input'), target; for(var i=0,max=input.length; i<max; i++){ if(input[i].name == 'hoge[]'){ target= input[i]; } target.value='match!' } </script> ------ JavaScript DOMで関連資料が見つかります。

yuzuru0024
質問者

お礼

回答ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

結局nameのような型がいい加減なものをつかうと処理が煩雑になると いうことです。 たとえばnameは性質上ユニークである必要はないためhoge[]が 複数存在する場合も考えられます(とくにhoge[]のような 配列渡しをするばあいなどは) こんな風な処理をいれるとよいかもしれません。 <script> function hoge(){ var f=document.getElementById('form1'); var nodes=f.elements['hoge[]']; if(nodes.length){ for(var i=0;i<nodes.length;i++){ nodes[i].value=1; } }else{ nodes.value=1; } } </script> <form id='form1'> <input size='10' type='text' name='hoge[]' value='0'> <input size='10' type='text' name='hoge[]' value='0'> </form> <input type="button" value="test" onclick="hoge()">

yuzuru0024
質問者

お礼

回答ありがとうございます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

エラーになるのは、配列表記のhoge[]と区別できないからだと思われます。 文字列表記で表せる form1.item('hoge[]').value = 1; のような方法で指定すればいけるのでは?

yuzuru0024
質問者

お礼

回答ありがとうございます。

関連するQ&A