- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 html View ,我用 ajax 调用中的 json 数据填充该 View 。我正在尝试运行我的函数 pageCtrl()
,但每次运行它时我总是得到一个空的 NodeList。
这可能是由于我的 ajax 完成之前运行的 pageCtrl()
函数引起的吗?
<script>
var Utils = {
escapeHtml: function _escapeHtml(s) { // Prevent code injection and rendering issues
return String(s).replace(/&/g, '&').replace(/>/g, '>').replace(/</g, '<');
}
};
function Panel(opts) {
var theDiv = document.getElementsByClassName('res-' + opts.classcontrol);
var theArray = [
'<div class="panel">',
' <div class="panel-heading">',
' <h4>',
' <span class="status"><b class="fa fa-', opts.icon, '"></b></span>',
' <span class="name">', Utils.escapeHtml(opts.title), '</span>',
' </h4>',
' </div>',
' <div class="panel-body">',
(opts.trustedBody || Utils.escapeHtml(opts.body)),
' </div>',
'</div></div>'
];
if (theDiv.length == 0) {
theArray.splice(0,
0,
'<div class="res-',
opts.classcontrol,
'"><h1>Machine: ',
opts.classcontrol,
'</h1>');
theArray.push("</div>");
}
return theArray.join('');
}
function ConfigurationController(element) {
if (!element) {
throw new Error('Cannot create ConfigurationController: Element Required');
}
var self = this,
apiUrl = "http://api.mydomain.com/api/ShopViewDisplay/" + "@ViewBag.pathProc";
// Expose Public method(s)
this.load = load;
//this.render = render;
function load() {
// Attempt ajax call; on fail: use dummy data
reset();
$.ajax({
url: apiUrl,
type: 'GET',
dataType: 'json',
success: function(data) {
data.map(renderItem,
function(el) {
if (el != undefined) {
element.append(el);
}
});
},
error: function(request, error) {
alert("Request: " + JSON.stringify(request) + " Error: " + error);
}
});
}
function reset() {
element.children().remove();
return element;
}
function renderItem(obj) {
var callback = typeof this === 'function' ? this : false;
var statusIcon = "fire";
var itemPanel = Panel({
icon: statusIcon,
title: obj.WorkOrderNumber,
classcontrol: obj.PressNo,
trustedBody: [
' <div class="PressNo"><b></b> Machine: <br>', Utils.escapeHtml(obj.PressNo), '</br></div>',
' <br> ',
' <div class="Priority"><b></b> Priority: <br>', Utils.escapeHtml(obj.Priority),
'</br></div>',
' <br> ',
' <div class="PartNo"><b></b> Part: <br>', Utils.escapeHtml(obj.Part), '</br></div>',
' <br> ',
' <div class="Material"><b></b> Material: <br>', Utils.escapeHtml(obj.PartDesc),
'</br></div>',
' <br> ',
' <div class="Setup"><b></b> Setup(E/A): <br>',
Utils.escapeHtml(obj.EstActSetupHrs).replace('\r\n', ' / '), '</br></div>',
' <br> ',
' <div class="Run"><b></b> Run (E/A): <br>',
Utils.escapeHtml(obj.EstActRunHrs).replace('\r\n', ' / '), '</br></div>',
' <br> ',
' <div class="Qty"><b></b> Qty: <br>',
Utils.escapeHtml(obj.CalEndCompleteQty).replace('\r\n', ' / '), ' </br></div>'
].join('\n')
});
itemPanel = $(itemPanel);
var jj = ".res-";
jj += obj.PressNo;
var theDiv = $(jj);
if (theDiv.length == 0) {
return (typeof(callback) === 'function' ? callback(itemPanel) : itemPanel);
} else {
theDiv.append(itemPanel);
return undefined;
}
}
}
function pageCtrl()
{
var elements = document.querySelectorAll('[class^=res-]');
console.log(elements);
var active = 0;
setInterval(()=>{
if( ++active >= elements.length) active = 0;
//poor support for options
elements[active].scrollIntoView({
behavior:'smooth',
block:'start' //Where to align current item: 'start', 'end' or 'center'
})
},5000)
}
$(document).ready(function _onLoad() {
new ConfigurationController($('.configurationList')).load();
//setInterval(ctrl.load(), 60000);
pageCtrl();
});
</script>
<div class="configurationList">
<div class="res-1">
scroll to me then pause for 5 seconds next move to res-2
</div>
<div class="res-2">
scroll to me then pause for 5 seconds next move to res-8-5
</div>
<div class="res-8-5">
scroll to me then pause for 5 seconds next move to top and repeat
</div>
</div>
最佳答案
从成功回调函数中调用 pageCtrl() 函数,以便在构建 DOM 之前 pageCtrl() 中定义的逻辑可以与
$.ajax({
url: apiUrl,
type: "GET",
dataType: "json",
success: function(data) {
data.map(renderItem, function(el) {
if (el != undefined) {
element.append(el);
}
});
pageCtrl();
},
error: function(request, error) {
alert("Request: " + JSON.stringify(request) + " Error: " + error);
}
});
关于javascript - 运行 querySelectorAll() 时 NodeList 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56753860/
如何从一个 NodeList 中删除另一个 NodeList?例如,如果我有: var all = document.querySelectorAll('*'); var divs = documen
我是 javascript 编程的新手,我想了解更多。当我单击同一 nodeList 中的任何节点时,我想从 nodeList 的每个节点中删除类名。 我写了这段代码: d = document.qu
我正在使用 jQuery 编写一个网站,并且尝试将表单发布到另一个 PHP 文件而不离开页面。然后我找到了一种使用 jQuery 发布表单的方法。但是,当我将数据发布到 PHPpage 时,出现此错误
在下面的代码摘录中,products是一个xml节点列表,其结构为: 1 item1 2 item2 xml = httpRequest.r
我通常听说是因为实时节点列表“不好”(see this Zakas article)并通知 querySelectorAll 返回静态 HTMLCollection 的决定。为什么人们认为实时 Nod
我正在使用 Vaadin,一个 Java 框架。 我处理 XML 内容,我想用这些信息制作一棵树,但我不知道 XML 内容会持续多久。我发送一个调用来获取 XML,但使用不同的 IP 地址。 我知道如
我有一份正在搜索特定实例的文档,但是这些实例是由用户指定的,并且有多个。除了 for 循环内的 for 循环根据数组搜索 Nodelist 之外,我是否缺少一种不会使系统陷入困境的方法?或者更简单的方
这个问题在这里已经有了答案: Why doesn't nodelist have forEach? (10 个回答) Looping through a nodelist JS (1 个回答) 3年前
我想从其中一个包含特定文本的父节点获取所有子节点。换句话说:我开始搜索某个子节点,我确信该子节点包含我需要的一些字符串。一旦找到它,我需要获取同一级别的其他节点,而不是从与相同 Xpath 表达式匹配
我有一个事件日历。我遇到的问题是每次将事件插入到特定日期时,我的其他事件 innerHTML 也会发生变化。 我已经尝试过 event.stopPropagation() 以及 event.stopI
nodeList 和arguments 只是“类似数组”的优点是什么? 最佳答案 参数 arguments 不是真正的数组是历史产物。尽管正如在另一个答案中指出的那样,它具有 callee 属性,并且
我正在寻找一种面向 future 的方法来遍历 NodeList(即来自 element.querySelectorAll(selector))以及跨浏览器兼容。以前我一直在使用 ES6 Spread
我正在写一篇关于 Java 性能的演示文稿,我正在尝试确定这是否是一种不好的做法。我是一个 c++ 的人,所以我还不知道关于 java 的一切。我没有 item() 的源代码,我需要一个快速的答案!
首先是:这不是问如何将 NodeList 变成数组。这是相反的。 为了保持一致性,我想创建一个返回 NodeList 的函数,就像 document.querySelectorAll() 一样。 这是
我的 html 页面上有 3 个 div,所有这些都被分配了一个类名“tagline”。我想通过 JavaScript 为每个 div 分配样式。但我认为 NodeList 对象不允许我这样做。她就是
我有使用 document.getElementsByTagName('p') 存在于页面中的标签. 我想要的是,在 nodeList 中添加这些标签,就像 document.querySelecto
我已经使用nodeList = document.createDocumentFragment().childNodes;创建了一个NodeList;, 然后我设置了 nodeList[0] = do
我有一个包含 3 个对象的数组对象。我想删除除第一个对象之外的所有对象。 这是我从 XML 中获得的数据: mrArr[0] = "Val" = "5"
注意:在假定此问题重复之前,此问题底部有一个部分说明了为什么一些类似的问题没有提供我正在寻找的答案。 我们都知道将 NodeList 转换为 Array 很容易,并且有很多方法可以做到这一点: [].
我在 javascript 中有一个代码并返回 [object NodeList] 我怎么能纠正这个 请帮我 function downloadDiv(filename, elemen
我是一名优秀的程序员,十分优秀!