Javascript 将函数返回传递给JQuery选择器

Javascript 将函数返回传递给JQuery选择器,javascript,jquery,Javascript,Jquery,我从函数中获取一个值,并尝试在Jquery中将其作为选择器传递。JQUery不接受我传递的字符串 var make = function() { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; for (var i = 0; i < 5; i++) text += possible.charAt(Math.floor(Math.random() *

我从函数中获取一个值,并尝试在Jquery中将其作为选择器传递。JQUery不接受我传递的字符串

var make = function() {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

  for (var i = 0; i < 5; i++)
  text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text;
};
var makeimg = function() {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

  for (var i = 0; i < 5; i++)

  text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text;

};
var a = make();
var b = makeimg();

var making = '#' + a;
var makingimg = '#' + b;

$("body").append("<div id=" + making + "><img id=" + makingimg + ">     </div>");

alert(makingimg);

//set img to image tag
$(makingimg).attr("src", '/img/someimage.png');
$(makingimg).attr("width", '200px');
该警报显示正确的值,当我运行一种类型的函数时,它是一个字符串,但当我将其作为选择器传递时,它不会获取DOM元素


下面是一个带有代码的示例

您正在使用散列设置ID,因此最终

<div id="#dsadAs"><img id="#dsawqQ"></div>
等等,把它改成

$("body").append("<div id=" + a + "><img id=" + b + ">     </div>");

您正在使用散列设置ID,因此最终

<div id="#dsadAs"><img id="#dsawqQ"></div>
等等,把它改成

$("body").append("<div id=" + a + "><img id=" + b + ">     </div>");

问题是因为您将创建的元素的id属性指定为包含,例如id=foo,这是不正确的。您需要从这些属性中删除

还要注意make和makeimg是完全相同的函数,因此可以删除其中一个。另外,您正在div上设置src-这应该在img上,并且width应该是一个整数。试试这个:

var make = function() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    for (var i = 0; i < 5; i++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));    
    return text;
};

var a = make();
var b = make();    
$("body").append("<div id=" + a + "><img id=" + b + "></div>");
$('#' + b).attr({
    src: '/img/someimage.png',
    width: 200
});
您还可以在创建元素时设置属性,并不再需要再次查询DOM:

$("body").append('<div id="' + a + '"><img id="' + b + '" src="/img/someimage.png" width="200"></div>');

问题是因为您将创建的元素的id属性指定为包含,例如id=foo,这是不正确的。您需要从这些属性中删除

还要注意make和makeimg是完全相同的函数,因此可以删除其中一个。另外,您正在div上设置src-这应该在img上,并且width应该是一个整数。试试这个:

var make = function() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    for (var i = 0; i < 5; i++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));    
    return text;
};

var a = make();
var b = make();    
$("body").append("<div id=" + a + "><img id=" + b + "></div>");
$('#' + b).attr({
    src: '/img/someimage.png',
    width: 200
});
您还可以在创建元素时设置属性,并不再需要再次查询DOM:

$("body").append('<div id="' + a + '"><img id="' + b + '" src="/img/someimage.png" width="200"></div>');

元素的ID不应以开头。只有选择器应:

var divId = make();
var imgId = makeimg();

$("body").append("<div id=" + divId + "><img id=" + imgId + ">     </div>");

//set img to image tag
$( '#' + divId ).attr("src", '/img/someimage.png');
$( '#' + imgId ).attr("width", '200px');

元素的ID不应以开头。只有选择器应:

var divId = make();
var imgId = makeimg();

$("body").append("<div id=" + divId + "><img id=" + imgId + ">     </div>");

//set img to image tag
$( '#' + divId ).attr("src", '/img/someimage.png');
$( '#' + imgId ).attr("width", '200px');

创建div时,添加一个前面带有散列的id。您不应该这样做,只有jQuery选择器获取散列,请参见

相反,请执行以下操作:

var making = a; // remove hash
var makingimg = b; // remove hash

$("body").append("<div id=" + making + "><img id=" + makingimg + ">     </div>"); // ids added without hash

alert(makingimg);

//set img to image tag
$('#'+makingimg).attr("src", '/img/someimage.png');  // add hash to refer to the element
$('#'+makingimg).attr("width", '200px'); // add hash to refer to the element

创建div时,添加一个前面带有散列的id。您不应该这样做,只有jQuery选择器获取散列,请参见

相反,请执行以下操作:

var making = a; // remove hash
var makingimg = b; // remove hash

$("body").append("<div id=" + making + "><img id=" + makingimg + ">     </div>"); // ids added without hash

alert(makingimg);

//set img to image tag
$('#'+makingimg).attr("src", '/img/someimage.png');  // add hash to refer to the element
$('#'+makingimg).attr("width", '200px'); // add hash to refer to the element

虽然其他答案涉及前面有无关内容的ID,但我想提供另一种构建HTML的方法,在添加元素后不需要查找元素:

var a = make();
var b = makeimg();

//create a new div element
var d = $("div");
//create a new img element
var i = $("img");

//set up attributes on both
d.attr('id', a);
i.attr({
    'id': b,
    'src': '/img/someimage.png',
    'width': '200px'
});

//append the image to the div...
d.append(i);
//...and the div to the body
$("body").append(d);

如果您只是使用ID来查找设置src和width属性的元素,那么现在甚至不需要a/b变量和ID属性。

而其他答案处理的是前面有无关内容的ID,我想提供另一种构建HTML的方法,在添加元素后不需要查找元素:

var a = make();
var b = makeimg();

//create a new div element
var d = $("div");
//create a new img element
var i = $("img");

//set up attributes on both
d.attr('id', a);
i.attr({
    'id': b,
    'src': '/img/someimage.png',
    'width': '200px'
});

//append the image to the div...
d.append(i);
//...and the div to the body
$("body").append(d);

如果您只使用ID来查找元素以设置src和width属性,那么现在甚至不需要a/b变量和ID属性。

哇,有很多高重复率的人回答了这个问题!哇,有很多高级代表在回答这个问题!非常感谢。我知道这会是一件小事。时间一过,我会记下答案的。谢谢。我知道这会是一件小事。时间一过,我就会记下答案。