2010-06-08 40 views
1

我改变形式行动:错误的变化形式行动

window.onload = function() { 
    document.getElementById('pdf').onclick = addExportEvent; 
    document.getElementById('xls').onclick = addExportEvent; 
    document.getElementById('xml').onclick = addExportEvent; 
    document.getElementById('csv').onclick = addExportEvent; 
} 

function addExportEvent() { 
    data = grid.getAllGridData(); 
    document.getElementById('dados').setAttribute('value', encodeURIComponent(JSON.stringify(data))); 

    formulario = document.getElementById('formulario'); // Line 55! 
    formulario.action = 'php/' + this.id + '.php'; 
    formulario.submit(); 

    return false; 
} 

不过,这并不与Internet Explorer工作。它返回以下错误:

Message: The object doesn't support the property or method. 
Line: 55 
Character: 2 
Code: 0 
URI: http://www.site.com/javascript/scripts.js 
+0

不要忘记在Javascript声明变量时使用'var'关键字。例如'var data = grid.getAllGridData()'。这将在以后节省您的相关头痛问题。 – 2010-06-08 14:01:52

+1

请注意,Internet Explorer 7及更早版本的脚本错误行号非常不准确。这在IE 8中得到了改进,但对于我所知的所有情况,可能仍然存在行号不正确的情况。 – 2010-06-08 14:03:41

回答

1

我认为安迪E的头评论击中了它,好,头。你正在分配正确的元素,但没有声明它使用变种,这使IE插件和窒息和各种不好的东西。其他浏览器处理这一点很好。所以,你想,而不是访问它声明,这意味着它永远不会id的值的formulario:formulario

function addExportEvent() { 
    var data = grid.getAllGridData(); 
    document.getElementById('dados').setAttribute('value', encodeURIComponent(JSON.stringify(data))); 

    var formulario = document.getElementById('formulario'); // Line 55! 
    formulario.action = 'php/' + this.id + '.php'; 
    formulario.submit(); 

    return false; 
} 
+0

但是formulario是一个HTML元素,它可以在Firefox,Google Chrome,Opera等浏览器中运行... 在我之前: formulario.setAttribute('action','php /'+ this.id +'.php “); – Thomas 2010-06-08 14:02:00

+0

安迪是对的^看到修改^ – 2010-06-08 14:05:28

+0

Yeap,安迪是对的!我把var关键字和一切工作! 谢谢你们! – Thomas 2010-06-08 14:07:15