我正在尝试填充使用以下内容创建的下拉表单字段:
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
typedef struct test_s {
int id;
char *p;
struct test_s *next;
} test_t;
test_t** add(test_t **root, int id, char const *name){
size_t len = strlen(name);
test_t *newnode=(test_t*)malloc(sizeof(test_t)+len+1); // 1 goes for \0 terminator
newnode->id=id;
strcpy(newnode->p=(void*)(newnode+1), name);
newnode->next=NULL;
test_t **tail = root;
while (*tail) {
tail = &(*tail)->next;
}
*tail = newnode;
return &(newnode->next);
}
使用以下JavaScript:
<div class="section">
<label >Province</label><br>
<select id="provinces"></select>
</div>
如果我将脚本放在HTML文档中,但如果我删除脚本标记并将其放在外部文件中,则没有任何反应。我已经使用
在HTML文件中引用了js文件var provinces = ['Gauteng', 'Limpopo', 'Western Cape','Northern Cape','Mpumalanga','Kwazulu Natal','North West','Eastern Cape','Free State'],
select = document.getElementById( 'provinces' );
for( province in provinces ) {
select.add( new Option( provinces[province] ) );
};
我确认我正在引用正确的字段。
我显然犯了一些其他愚蠢的错误。你们中的任何一位专家都会好心地告诉我哪里出错了吗?
答案 0 :(得分:0)
检查是否 1)正确引用脚本文件(打开src位置)和 2)脚本标记位于正文中(理想情况下在section元素之后)。可能是javascript代码在呈现元素之前执行
答案 1 :(得分:0)
在DOM结构中创建元素之前,您正在调用脚本。
JavaScript代码:
<script type="text/javascript">
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
</script>
如果我将脚本放在HTML文档中( 在选择元素创建之后放置脚本,这就是它工作的原因 ),这非常有效。
但如果我删除脚本标记并将其放在外部文件中没有任何反应( 您在html head section top中添加外部文件,脚本将执行即时头部分加载。它不会等待加载整个主体,因此您的脚本将无法获得选择元素&amp;您将在浏览器中收到JavaScript错误 "Uncaught TypeError: Cannot read property 'add' of null at ..."
)。我已经在HTML文件中引用了js文件
<script type="text/javascript" src="js/formcalculations.js"></script>
我已经确认我正在引用正确的字段。
我显然犯了一些其他愚蠢的错误( 你不是傻瓜,它发生在每个初学者身上,即使它发生了很多时间和我在一起......好吧,那个时候我还是个孩子:d 强>)。你们中的任何一位专家都会好心地告诉我哪里出错了吗? ( 当然亲爱的,Stackers无处不在,愿意帮助每一个人:):) )
正确的方法是在html正文的末尾添加脚本或外部javascript,那么你的脚本将获得所有必需的元素 从身体。
工作脚本:内联(无论是</head>
之前还是</body>
之前)
<script type="text/javascript">
window.onload = function() {
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
};
</script>
外部脚本代码:(无论是</head>
之前还是</body>
之前)
window.onload = function() {
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
};
答案 2 :(得分:-1)
你必须在加载dom后执行你的代码,你有一些选择如何做到这一点:
在页面末尾加载js;
在脚本代码上使用defer
属性;