"FieldName=" を含むすべてのテーブル セルを検索しようとしています。最初に getElementsByTagName を使用してこれを行い、次に indexOf を使用してテストをループすると、正常に動作し、191 個のセルを取得してから、ターゲット セルを完全にテストすることに成功しました。
次に、 $("td:contains('FieldName')"); で試しました。そしてそれは失敗します。等号にバックスラッシュを付けたり、バックスラッシュを 2 つ付けたり、削除したりしてみましたが、それでもヒットはゼロです。UC または LC に変換する必要なく indexOf で動作するため、このケースは正しいです。
ヘルプ!:-) まじめな話、標準の JS は動作するので何とかやってのけることができますが、そのようなクールなツールを使用できず、その理由がわからないのは本当にもどかしいことです。これが私のコードです - 両方のアプローチの結果を見るためにコメントしてコメントを外してください:
//var cells = document.getElementsByTagName("td");
var cells = $("td:contains('FieldName\=')");
alert(cells.length);
for (var i = 0; i < cells.length; i++) {
if (cells[i].innerHTML.indexOf('FieldName=') > -1) {
// do stuff here...
}
}
誰かが私の間違いを見つけたとき、私はばかげていると思うでしょうが、それは私たちが学ぶ方法です. :-)
サンプルセル:
<TD valign="top" class="ms-formbody" width="400px">
<!-- FieldName="Title"
FieldInternalName="Title"
FieldType="SPFieldText"
-->
<span dir="none">
<input name="ctl00$m$g_c2ed1f85_8eef_4759_817c_cd68435bd0a3$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_c2ed1f85_8eef_4759_817c_cd68435bd0a3_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Title" class="ms-long" /><br>
</span>
</TD>