-1

我正在尝试 getElementById("game_image") 并且 TagName 是 'img' 我想要 'src' 标记中的数据,特别是 'key=f430a2c1' 令牌。:

<img id="game_image" src="img/index.php?key=f430a2c1&rand=956875" alt="game image." style="padding-right:150px;" />

*

$("#b_hint").click(function(){
//        var images = document.getElementsByTagName("img"),
//          wanted;
var data = document.getElementById("game_image"), wanted;
wanted = data[1].src;
//    if (images.length) {
//      wanted = images[1].src;
//    if (wanted) {
//       wanted = wanted.split("?");
//       if (wanted.length >= 2 && wanted[1].indexOf("&") !== -1) {
//           wanted = wanted[1].split("&")[0];
//      }
// }
//}

//if (typeof wanted !== "string") {
//    wanted = "";
// }

alert(wanted);
4

6 回答 6

3
wanted = data.src;

getElementById返回单个元素,而不是 NodeList,因此您不需要使用数组语法。

于 2013-05-15T18:38:15.293 回答
0

另请参阅此正则表达式驱动的解决方案:

var regex = new RegExp(".*?\\?.*?\\b(key=[^&]+)");
$("#b_hint").click(function() {
    var src = document.getElementById("game_image").src;
    var wanted = regex.test(src) ? src.match(regex)[1] : "";
    ...

这将正确匹配该key=<value>部分,即使 'key' 不是查询字符串中的第一个参数。

于 2013-05-15T19:18:07.887 回答
0
wanted = data.src;
wanted = wanted.substring(wanted.indexOf('?') + 1)
于 2013-05-15T18:38:27.683 回答
0

考虑到srcURL 可能包含更多由 '&' 分隔的参数,您可以key=...这样提取:

function getKey(url) {
    var idx1 = url.indexOf("?") + 1;
    if (idx1 == -1) { return ""; }

    var idx2 = url.indexOf("&");
    if (idx2 == -1) { idx2 = url.length; }

    return url.substring(idx1, idx2);
}

$("#b_hint").click(function() {
    var img = document.getElementById("game_image");
    var wanted = getKey(img.src);
    ...

注意
要使getKey()函数正常工作,'key' 参数必须直接出现在 '?' 后面。(例如...?key=...,但不是 ...?some=other&key=...)。

于 2013-05-15T18:58:11.753 回答
-1

杰奎尔?!工作小提琴-> http://jsfiddle.net/mpyfQ/8/

    var data = $("#game_image").attr("src");
    data = data.substring(data.indexOf('?') + 1);
于 2013-05-15T18:50:52.217 回答
-2

答案应该是 InnerHTML。

于 2013-05-15T18:40:08.763 回答