2017-10-15 106 views
0

我试图显示记录,然后允许用户查看特定的记录。记录是用python收集的。 当用户点击特定记录的应用程序ID时,我想存储应用程序ID以便用它查询记录的更多详细信息。循环html输入值(使用python)

我有一个循环,从python收集的所有记录都显示在一个html表格中。每个记录的应用程序ID都显示正确。但是当我尝试通过单击应用程序ID的按钮来存储数据时,它总是存储所显示的第一条记录的应用程序ID。例如,第一个应用程序ID是3,第二个是13。如果我点击13,它将存储3. 不知道为什么会出现这种情况,因为它显示正确。我附上了正在发生的图像。 任何帮助将不胜感激。

我的HTML:

<tbody> 
       {% for row in rows %} 
       <tr> 
        <td> 
        <input type='button' name="number" id = 'number' type="submit" onclick="initStorage()" value = {{row.id}} ></input> 
        </td> 
        <td>{{ row.name }}</td> 
        <td>{{ row.email }}</td> 
        <td>{{ row.phone }}</td> 
       </tr> 
       {% endfor %} 
</tbody> 

我的javascript:

[<script type = 'text/javascript'> 
    function initStorage() { 
    function saveNumber() { 
     var number = document.getElementById('number'); 
     localStorage.setItem('number', number.value); 
     alert(localStorage.getItem('number')); 
    } 
    saveNumber(); 
    } 

</script>][1] 

Photo of issue: select application 13, but it wants to store 3

回答

0

[<script type = 'text/javascript'> 
 
     function initStorage(val) { 
 
     function saveNumber() {   
 
      localStorage.setItem('number', val); 
 
      alert(localStorage.getItem('number')); 
 
     } 
 
     saveNumber(); 
 
     } 
 
    
 
    </script>]
<tbody> 
 
        {% for row in rows %} 
 
        <tr> 
 
         <td> 
 
         <input type='button' name="number" id = 'number' type="submit" onclick="initStorage({{row.id}})" value = {{row.id}} ></input> 
 
         </td> 
 
         <td>{{ row.name }}</td> 
 
         <td>{{ row.email }}</td> 
 
         <td>{{ row.phone }}</td> 
 
        </tr> 
 
        {% endfor %} 
 
    </tbody>

我做你的代码更容易一点understand.This方式,你直接传递值当按钮被按下没有必要现在通过jquery来访问它。

另一种可能的解决方案是使用类而不是id='number'即。 class='number'并通过点击jquery访问它,而没有像这样的onclick功能

$('.number').on('click',function(){ 
    var number = $(this).val(); 
}); 
0

id标签represents a unique element。即使您的代码正确更新了value属性,仍然只有一个元素在DOM中注册为number。此注册将呈现为id="number"(在本例中为3)的第一个元素的值。

使用this作为参数initStorage()以获取点击元素的属性,而不是搜索saveNumber()中的元素。此外,为每个元素提供唯一的ID - 您可以通过编程添加一个后缀来执行此操作(还有很多其他方法)。即使您最终没有在本节中引用id的元素,仍保持id代码的独特性仍是一种好的做法。

这里有一个小提琴证明:https://jsfiddle.net/kwu7oLju/