我知道这个问题已经问了很多遍了,但是我找不到我的场景的答案。下面是我的代码。我在findPattern
函数的最后一行中收到此错误。但是我在ID
内部创建的createMyArea
为textArea += 'id="P'+app_page_id+'_VALUE'+key+'"
。但是,为什么找不到ID
?请让我知道我在这里做错了。我是在页面加载后加载的
var app_page_id = 40;
var app_pattern_page_id = 32;
var app_id;
var checksum;
var lang;
$(document).ready(function() {
app_id = $("#pFlowId").val();
checksum = $("#pInstance").val();
createMyFlow();
function createMyFlow(){
var result = new htmldb_Get(null, $v('pFlowId'), 'APPLICATION_PROCESS='+getAllLanguagesProc, $v('pFlowStepId'));
lang = jQuery.parseJSON(result.get()).lang;
createMyArea();
result = loadDataFromMyOra();
if(result !== null)
findPattern(result);
}
function createMyArea(){
var textArea;
for ( var key in lang){
textArea = '<tr><td align="right"><label for="P'+app_page_id+'_VALUE_'+key+'">';
textArea += '<span class="optional">Name '+languages[key][0]+': </span></label></td>';
textArea += '<td align="left" valign="middle">';
textArea += '<input type="hidden" name="p_arg_names" />';
textArea += '<fieldset id="P'+app_page_id+'_VALUE_fieldset_'+key+'" class="textarea" tabindex="-1">';
textArea += '<input name="p_t04" type="text" maxlength="50" size="32" value=""';
textArea += 'id="P'+app_page_id+'_VALUE'+key+'" required="" class="text_field"></fieldset>'
textArea += '</td></tr>';
$('.formlayout').append(textArea);
}
}
function findPattern(patterns)
{
var item = "";
for ( var key in patterns){
item = patterns[key]+"";
item = item.replace(/,/g,",");
item = item.replace(/“/g,'"')
document.getElementById("P"+app_page_id+"_VALUE"+key).value = item; //error here
}
}
});
答案 0 :(得分:1)
错误表明document.getElementById("P"+app_page_id+"_VALUE"+key)
是null
。倒退,想一想它可能为空的所有原因:
"P"+app_page_id+"_VALUE"+key
的评价是什么? DOM中是否存在具有此ID的元素? (您可以使用浏览器开发工具手动检查DOM树,或尝试在开发控制台中运行getElementById()
。)createMyArea()
可能无法正常工作?
lang
是一个空对象,则此循环将执行0次:for (var key in lang) ...
for
循环在lang
对象的键上进行迭代,但是在循环内您可以通过languages[key]
访问。有点奇怪。他们还有许多要检查的东西,但这应该使您对要寻找的东西有所了解。后退并测试所有假设!
答案 1 :(得分:0)
答案 2 :(得分:0)
生成代码createMyArea()
的函数使用lang变量中的键
for ( var key in lang){
....
textArea += 'id="P'+app_page_id+'_VALUE'+key+'" required="" class="text_field"></fieldset>'
....
但是在findPatterns中,您正在使用另一个变量的键检查文档的ID
for ( var key in patterns){
....
document.getElementById("P"+app_page_id+"_VALUE"+key).value = item;
....
如果patterns变量和lang变量没有相同的键,则将出现错误。
要进行确认,您可以
console.log ("P'+app_page_id+'_VALUE'+key+'")
恰好在document.getElementById之前,然后查看在那里检查了哪些值。