我找不到动态创建的javascript对象的名称(在jQuery中)
我有一个页面,它使用javascript向页面中添加一些文本框,然后我们尝试稍后基于这些文本框进行一些工作 但是,我遇到的很多问题是,我无法返回使用js保存的“name”值 全文来源(尽管是简化版)如下我找不到动态创建的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
<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如果没有坏,就别修了。不过谢谢你的回答,这正是我需要的。