变量可以作为javascript中的元素id传递

时间:2011-08-28 22:04:54

标签: javascript ajax django

我正在尝试使用jQuery使用Django运行一些AJAX。问题是我想要改变的元素的ID不是一成不变的,它是一个Django模板变量,所以它对于表中的每个元素都是不同的,但是我想用AJAX来改变那个元素。我通过simplejson将字典从Django视图传递给JavaScript,相关对象是ID和模型(不是真正的变量名,只是想让我明白我想做的事情)。一些伪代码(第三行,像python一样编写,因为我不知道如何在JavaScript中执行此操作):

var quantity_update = function(msg, elem) {
    var response_obj = eval('(' + msg + ')');
    var newtotal = document.getElementById("%s, %s"); % (response_obj.id, response_obj.model)
    subtotal.innerHTML = "<td>"+response_obj.subtotal+"</td>"; 

这样的事情是否可能,如果是这样的话?

3 个答案:

答案 0 :(得分:0)

如果您的元素ID没有设置,您可能希望使用其他方法识别元素。许多JS框架(如jQuery)都支持通过CSS Selector进行识别。例如,您可以通过组合其标记和类来标识要更改的元素。

有关可用选择器的文档,请阅读jQuery Selector Documentation

答案 1 :(得分:0)

Javascript没有花哨的字符串格式(%s),但您可以使用纯字符串连接,就像在Python中一样:

var id = response_obj.id + ', ' + resonse_obj.model

您无需担心音频生成的字符串。毕竟它仍然是一个字符串,getElementById以同样的方式接受它。


您可能不应该自己执行eval()来解析JSON。当你做AJAX请求时,我很确定你可以让JQuery为你做这件事。

答案 2 :(得分:0)

您可以完全将jquery css选择器作为变量传递。简单的例子:

var elementId = $('td').eq(0).attr('id'),
    myElement = $('#'+elementId); 

在这个例子中,我们获取文档中第一个TD的ID,找到它的id,然后用它来获取“myElement”

您可能会发现查看jQuery文档(api.jquery.com)的“选择器”部分以查看查找元素的所有选项很有帮助。在我的例子中,我也使用了jquery.eq()方法,该方法将选择器列表(在本例中为所有TD)过滤为特定的一个。