Javascript选择具有复杂ID的元素

时间:2013-09-17 06:29:01

标签: javascript jquery

需要一些帮助!我试图获取下面的输入id“j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63”的值,并尝试了jquery和javascript,如:document.getElementById("j_id0:j_id2:j_id4:j_id54:0:j_id59:3:j_id63")但仍然得到一个null结果。 ID也无法更改,任何帮助赞赏

<td class="sf42_cell_bottom_light"><span id="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id61"><input id="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63" maxlength="200" name="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63" size="20" type="text" value="717474417"></span></td>

4 个答案:

答案 0 :(得分:1)

使用此:

$("[id='j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id61']")

顺便说一下,由于您正在使用JSF,因此将ID设置为每个组件是一种很好的做法,以避免出现这种可怕的ID(如果添加/删除组件,谁可以更改)。

查看此主题中的更多信息:

答案 1 :(得分:0)

你对元素有任何控制吗?你能为它添加一个课程吗?

var val= document.getElementsByClassName("TheClassName");

或者你可以使用类sf42_cell_bottom_light获取TD(如果它是唯一的)然后通过以下方式获取其INPUT元素:

var theTd= document.getElementsByClassName("sf42_cell_bottom_light");
var val =  theTD.getElementsByTagName("INPUT");

我需要查看更多HTML以便为您提供更好的答案。

答案 2 :(得分:0)

您可能需要在ID中转义colon .So

试试这个

 function RemoveInvalidCharacter(myid) {
        return '#' + myid.replace(/(:|\.|\[|\])/g, "\\$1");
    }

并像这样打电话

$(RemoveInvalidCharacter('j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id61'));

查看How do I select an element by an ID that has characters used in CSS notation

答案 3 :(得分:0)

我已经测试了这段代码:

   <td class="sf42_cell_bottom_light">
<span id="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id61">
<input id="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63" maxlength="200" name="j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63" size="20" type="text" value="717474417">
</span>
</td>


<script type="text/javascript">
    document.write(document.getElementById("j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63").value);
</script>

在FF,IE,Chrome(最新版本)......似乎工作正常......你确定这是关于这个ID吗?

替换:

document.getElementById("j_id0:j_id2:j_id4:j_id54:0:j_id59:3:j_id63")

document.getElementById("j_id0:j_id2:j_id4:j_id54:0:j_id59:0:j_id63")

id不同。

http://jsfiddle.net/wNePW/