Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我找不到动态创建的javascript对象的名称(在jQuery中)_Javascript_Jquery_Html - Fatal编程技术网

我找不到动态创建的javascript对象的名称(在jQuery中)

我找不到动态创建的javascript对象的名称(在jQuery中),javascript,jquery,html,Javascript,Jquery,Html,我有一个页面,它使用javascript向页面中添加一些文本框,然后我们尝试稍后基于这些文本框进行一些工作 但是,我遇到的很多问题是,我无法返回使用js保存的“name”值 全文来源(尽管是简化版)如下 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="Scripts/jquery-1.4.1-vsdoc.js"></scr

我有一个页面,它使用javascript向页面中添加一些文本框,然后我们尝试稍后基于这些文本框进行一些工作

但是,我遇到的很多问题是,我无法返回使用js保存的“name”值

全文来源(尽管是简化版)如下

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="Scripts/jquery-1.4.1-vsdoc.js"></script>
    <script type="text/javascript"> 
    $(document).ready(function () {
        //we use live because the inputs havent been created yet. 
        $('.myclass').live('blur', function () {

            //debugger;
            alert('textbox selected has ID '+ $(this).attr('id') ); //this returns txtInput
            alert('textbox selected has name '+ $(this).attr('name') ); //this returns null (or an empty string). 
        });

    AddInputTextBox("My Label: ", "txtInput", "mydiv", "MyName");

    });

    function AddInputTextBox(LabelValue, Id, divToAddTo, NameKey) {
        //debugger;
        var txtbox = document.createElement('input');
        txtbox.setAttribute("type", "text");
        txtbox.setAttribute("id", Id);
        txtbox.setAttribute("name", NameKey);
        txtbox.setAttribute("class", "myclass"); 

        alert('Textbox created with name = ' + txtbox.name);

        var foo = document.getElementById(divToAddTo);
        foo.innerHTML += LabelValue;
        foo.appendChild(txtbox);
    } 
    </script> 
</head>

<body>
    <div id="mydiv">
        <!-- placeholder -->
    </div>
</body>
</html>

$(文档).ready(函数(){
//我们使用live,因为尚未创建输入。
$('.myclass').live('blur',函数(){
//调试器;
警报('textbox selected的ID为'+$(this).attr('ID');//这将返回txtInput
alert('textbox selected的名称为'+$(this).attr('name');//这将返回null(或空字符串)。
});
AddInputTextBox(“我的标签:”、“TXInput”、“mydiv”、“MyName”);
});
函数AddInputTextBox(LabelValue、Id、divToAddTo、NameKey){
//调试器;
var txtbox=document.createElement('input');
setAttribute(“类型”、“文本”);
setAttribute(“id”,id);
setAttribute(“名称”,NameKey);
setAttribute(“类”、“myclass”);
警报('使用名称='创建的文本框+txtbox.name);
var foo=document.getElementById(divToAddTo);
foo.innerHTML+=LabelValue;
foo.appendChild(txtbox);
} 
如您所见,document.ready运行并创建一个文本框。 当模糊触发时(框失去焦点)-我可以访问ID、类、类型等,但无法获取“name”的值


当然这很简单,但有人能告诉我为什么吗?

这似乎对我有用

我错过什么了吗


鲍勃

这似乎对我有用

我错过什么了吗

Bob

当您使用IE创建
元素时,您必须这样做:

var txtbox = document.createElement('<input name="' + NameKey + '">');
var txtbox=document.createElement(“”);
IE不希望您在
存在后更改它的“name”属性,因此您必须告诉它在调用“createElement()”时要做什么

有人可能想知道,既然已经加载了动态内容,为什么不使用jQuery来构建动态内容

(编辑我以为它是“type”属性,但现在我认为它是“name”。

当你用IE创建
元素时,你必须这样做:

var txtbox = document.createElement('<input name="' + NameKey + '">');
var txtbox=document.createElement(“”);
IE不希望您在
存在后更改它的“name”属性,因此您必须告诉它在调用“createElement()”时要做什么

有人可能想知道,既然已经加载了动态内容,为什么不使用jQuery来构建动态内容


(编辑我以为它是“type”属性,但现在我认为它是“name”。

它适用于我这里:哪个浏览器给你带来了问题?你是否遗漏了加载jQuery的部分?也适用于我:适用于FF,即Opera、Chrome、Safari。嗯,我刚刚在FF中尝试过,它也适用(从未想过这是一个浏览器问题),但IE不起作用。IE8 to be precise在这里对我有效:哪个浏览器给了你问题?你遗漏了加载jQuery的部分了吗?对我也有效:在FF中对我很好,IE,Opera,Chrome,Safari..嗯,我刚刚在FF中尝试过,它也有效(从未想过这是一个浏览器问题),但IE不起作用。准确地说,IE8 javascript是一种经过良好测试和可靠的旧方法。我只是将页面作为一个整体进行现代化。如果它没有损坏,请不要修复它。谢谢你的回答,这正是我所需要的。javascript是一种经过良好测试和可靠的旧方法。我只是将页面作为一个整体进行现代化。一个d如果没有坏,就别修了。不过谢谢你的回答,这正是我需要的。